laluk
laluk

Reputation: 37

PHPMailer error - SMTP Error: Data not accepted

I have done a contact form and obviously I would like to receive a confirmation email when a user fill out this form on my website.

I'm using PHPMailer. When I test the code on my computer as localhost, everything works fine and confirmation message is received properly.

Here you are the PHP script:

<?php

$Name= $_POST['Name'];
$Email = $_POST['Email'];
$Message = $_POST['Message'];

if ($Name=='' || $Email=='' || $Message==''){

echo "<script>alert('Please fill out mandatory fields');location.href ='javascript:history.back()';</script>";

}else{

require("archivosformulario/class.phpmailer.php");
$mail = new PHPMailer();

$mail->From     = $Email;
$mail->FromName = $Name; 
$mail->AddAddress("[email protected]");


$mail->WordWrap = 50; 
$mail->IsHTML(true);     
$mail->Subject  =  "Contact Form";
$mail->Body     =  "Name: $name \n<br />".    
"Email: $Email \n<br />".    
"Message: $Message\n<br />";


// SMTP Server

$mail->IsSMTP(); 
$mail->SMTPDebug  = 2;    
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true; 
$mail->Port = 465;
$mail->SMTPSecure = "ssl"; 
$mail->Username = "[email protected]"; 
$mail->Password = "mypassword"; 

if ($mail->Send())
echo "<script>alert('We have received your message. We will contact you shortly.');location.href ='javascript:history.back()';</script>";
else
echo "<script>alert('Error');location.href ='javascript:history.back()';</script>";

}

?>

The problem is when I upload this PHP script on a web hosting (i.e 123-reg.co.uk), it doesn´t work.

Error message:

SMTP Error: Data not accepted

Here you are the PHP script:

<?php

$Name= $_POST['Name'];
$Email = $_POST['Email'];
$Message = $_POST['Message'];

if ($Name=='' || $Email=='' || $Message==''){

echo "<script>alert('Please fill out mandatory fields');location.href ='javascript:history.back()';</script>";

}else{

require("archivosformulario/class.phpmailer.php");
$mail = new PHPMailer();

$mail->From     = $Email;
$mail->FromName = $Name; 
$mail->AddAddress("[email protected]");


$mail->WordWrap = 50; 
$mail->IsHTML(true);     
$mail->Subject  =  "Contact Form";
$mail->Body     =  "Name: $name \n<br />".    
"Email: $Email \n<br />".    
"Message: $Message\n<br />";


// SMTP Server

$mail->IsSMTP(); 
$mail->SMTPDebug  = 2;    
$mail->Host = "smtp.123-reg.co.uk";
$mail->SMTPAuth = true; 
$mail->Port = 25;
$mail->Username = "[email protected]"; 
$mail->Password = "password"; 

if ($mail->Send())
echo "<script>alert('We have received your message. We will contact you shortly.');location.href ='javascript:history.back()';</script>";
else
echo "<script>alert('Error');location.href ='javascript:history.back()';</script>";

}

?>

I have tried uploading and executing this PHP script from another free web hosting but it was to not avail.

I'm kind of new in PHP, especially in dealing with mail functions.

What can be the reason? Any additional help would be appreciated.

Thanks in advance for your help.

Upvotes: 0

Views: 18052

Answers (1)

Shashank Shah
Shashank Shah

Reputation: 2167

Your server doesn't allow different sender and username you should config: $mail->From like $mail->Username

Moreover...

Most times I've seen this message the email gets successfully sent anyway, but not always. To debug, set:

$mail->SMTPDebug = true;

You can either echo the debug messages or log them using error_log():

// 'echo' or 'error_log'
$mail->Debugoutput = 'echo';

A likely candidate especially on a heavily loaded server are the SMTP timeouts:

// default is 10
$mail->Timeout = 60;

class.smtp.php also has a Timelimit property used for reads from the server!

Hope this information helps! :)

Upvotes: 5

Related Questions