I'm new to PHP and have taken a script as an example online.
I have setup Xampp and the php is installed and working.
I've attempted to setup a local mailserver with hMailServer, however I'm not entirely sure if that's setup correctly.
Anyhow, here's the PHP code:
<?php
$subject="";
$detail="";
$customer_mail="";
$name="";
// Contact subject
$subject ="$subject";
// Details
$message="$detail";
// Mail of sender
$mail_from="$customer_mail";
// From
$header="from: $name <$mail_from>";
// Enter your email address
$to ='sean.myers92@gmail.com';
$send_contact=mail($to,$subject,$message,$header);
// Check, if message sent to your email
// display message "We've recived your information"
if($send_contact){
echo "We've recived your contact information";
}
else {
echo "ERROR";
}
?>
And the corresponding HTML code:
<table width="400" border="0" align="center" cellpadding="3" cellspacing="1">
<tr>
<td><strong>Contact Form </strong></td>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<td><form name="form1" method="post" action="test.php">
<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr>
<td width="16%">Subject</td>
<td width="2%">:</td>
<td width="82%"><input name="subject" type="text" id="subject" size="50"></td>
</tr>
<tr>
<td>Detail</td>
<td>:</td>
<td><textarea name="detail" cols="50" rows="4" id="detail"></textarea></td>
</tr>
<tr>
<td>Name</td>
<td>:</td>
<td><input name="name" type="text" id="name" size="50"></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input name="customer_mail" type="text" id="customer_mail" size="50"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
When I submit the form I get the error Warning: mail() [function.mail]: SMTP server response: 530 SMTP authentication is required.
Any ideas what could be wrong?
Thanks
From the forums of hMailServer: http://www.hmailserver.com/forum/viewtopic.php?f=6&t=22039
On the IP ranges. goto the my computer ip range and untick authentication for local to external and/or external to external.
Xampp has no Mail server build in. You'll need to set one up.
Mail issues with PHP, Unable to send
Error on sending mail with XAMPP
alternative use another stmp server (ie googlemail) and a mail library such as PEAR:Mail or swiftmailer to establish a imap/smtp connection with login credentials
its php that's not configured you can update to point to a valid smtp server
in the php.ini look up [mail function]
this is for windows only
you may want to set up mail server locally as does not support passwords or
use phpmailer available from
http://sourceforge.net/projects/phpmailer which does support logins
Download the latest phpmailer from this link http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list and read its gmail tutorial. for me it works from local system too :) + it's very simple tutorial.
/**
* return error string or null if success
*/
function authSendEmail($sendto, $replyto, $subject, $message, $namefrom=""){
//SMTP + SERVER DETAILS
/* * * * CONFIGURATION START * * * /
$smtpServer = "mail.server.com";
$port = "25";
$timeout = "5";
$username = "test@server.com";
$password = "test";
$newLine = "\r\n";
/ * * * CONFIGURATION END * * * * */
/*
2ХХ — команда успешно выполнена
3XX — ожидаются дополнительные данные от клиента
4ХХ — временная ошибка, клиент должен произвести следующую попытку через некоторое время
5ХХ — неустранимая ошибка
*/
//0 //Connect to the host on the specified port
$smtpConnect = fsockopen($smtpServer, $port, $errno, $errstr, $timeout);
$smtpResponse = fgets($smtpConnect, 1024);
if(empty($smtpConnect) || $smtpResponse{0} !='2' )
{
return "Failed to connect: $smtpResponse";
}
//1 //hello server
fputs($smtpConnect,"EHLO servername" . $newLine);
$smtpResponse = fgets ($smtpConnect);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
$smtpResponse = fgets ($smtpConnect);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
$smtpResponse = fgets ($smtpConnect);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
$smtpResponse = fgets ($smtpConnect);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
$smtpResponse = fgets ($smtpConnect);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
$smtpResponse = fgets ($smtpConnect);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
//2 //Request Auth Login
fputs($smtpConnect,"AUTH LOGIN" . $newLine);
$smtpResponse = fgets($smtpConnect, 1024);
if($smtpResponse{0} !='3' )
return "Failed: $smtpResponse";
//3 //Send username
fputs($smtpConnect, base64_encode($username).$newLine);
$smtpResponse = fgets($smtpConnect, 1024);
if($smtpResponse{0} !='3' )
return "Authentification failed: $smtpResponse";
//4 //Send password
fputs($smtpConnect, base64_encode($password).$newLine);
$smtpResponse = fgets($smtpConnect, 1024);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
//6 //Email From
fputs($smtpConnect, "MAIL FROM: ".$username . $newLine);
$smtpResponse = fgets($smtpConnect, 1024);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
//7 //Email To
fputs($smtpConnect, "RCPT TO: ".$sendto . $newLine);
$smtpResponse = fgets($smtpConnect, 1024);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
//8 //The Email
fputs($smtpConnect, "DATA" . $newLine);
$smtpResponse = fgets($smtpConnect, 1024);
if($smtpResponse{0} !='3' )
return "Failed: $smtpResponse";
//9 //Construct Headers
$headers = "MIME-Version: 1.0" . $newLine;
$headers .= "Content-type: text/html; charset=windows-1251" . $newLine;
$headers .= "To: Администратор <$sendto>" . $newLine;
$headers .= "From: $namefrom <$username>" . $newLine;
$headers .= "Reply-To: $namefrom <$replyto>" . $newLine;
$headers .= "X-Mailer: ".phpversion(). $newLine;
fputs($smtpConnect, "Subject: $subject\n$headers\n\n$message\n.\n" );
$smtpResponse = fgets($smtpConnect, 515);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
//10 // Say Bye to SMTP
fputs($smtpConnect,"QUIT" . $newLine);
$smtpResponse = fgets($smtpConnect, 1024);
if($smtpResponse{0} !='2' )
return "Failed: $smtpResponse";
return false;
}
?>