2009-03-12 11 views
4

Следующий код выдает сообщениеMailer Error: ошибка SMTP: следующая ошибка SMTP: данные не принимаются

Mailer Error: SMTP Error: The following SMTP Error: Data not accepted. But when I replace $EmailAdd with a [email protected] The mail was sent. 

Что случилось с моим кодом? Я немного новый в php, особенно в работе с почтовыми функциями.

$sql1 = "SELECT Email_Address FROM participantable where IDno=$studId"; 
$result1 = mysql_query($sql1); 
while ($row1 = mysql_fetch_assoc($result1)){ 
    $EmailADD = $row1["Email_Address"]; 
} 

//error_reporting(E_ALL); 
error_reporting(E_STRICT); 
date_default_timezone_set('America/Toronto'); 

include("class.phpmailer.php"); 
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

$mail    = new PHPMailer(); 
$body    = $mail->getFile('contents.html'); 
$body    = eregi_replace("[\]",'',$body); 

$mail->IsSMTP(); 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->SMTPSecure = "ssl";     // sets the prefix to the servier 
$mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
$mail->Port  = 465;     // set the SMTP port for the GMAIL server 
$mail->Username = "[email protected]"; // GMAIL username 
$mail->Password = "********";   // GMAIL password 
$mail->AddReplyTo("[email protected]","Lord Skyhawk"); 
$mail->From  = "[email protected]"; 
$mail->FromName = "Update"; 
$mail->Subject = "PHPMailer Test Subject via gmail"; 
$mail->Body  = "Hi,<br>This is the HTML BODY<br>";      //HTML Body 
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 
$mail->WordWrap = 50; // set word wrap 
$mail->MsgHTML($body); 
$mail->AddAddress($EmailADD, "Agta ka"); 
$mail->AddAttachment("images/phpmailer.gif");    // attachment 
$mail->IsHTML(true); // send as HTML 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    $status = "Successfully Save!"; 
    header("location: User_retsched.php?IDno=$studId&status=$status&Lname=$Lname&Fname=$Fname&Course=$Course&Year=$Year"); 
} 
+1

Вы должны пойти изменить свой пароль gmail .... –

+0

, но когда я изменяю $ EmailAdd на настоящий адрес электронной почты, такой как [email protected], он отправляет почту. – 2009-03-12 21:55:20

+0

Я пробовал его пароль gmail - не работал – benlumley

ответ

0

Пробуйте использовать другой сервер SMTP? Смотрите, работает ли это?

Или просто не используйте SMTP-сервер, большинство серверов с PHP также имеют sendmail/postfix, поэтому могут самостоятельно отправлять электронную почту.

удалить этот бит ...

$mail->IsSMTP(); 

$mail->SMTPAuth = true;     // enable SMTP authentication 

$mail->SMTPSecure = "ssl";     // sets the prefix to the servier 

$mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 

$mail->Port  = 465;     // set the SMTP port for the GMAIL server 

$mail->Username = "[email protected]"; // GMAIL username 

$mail->Password = "alucar";   // GMAIL password 
+0

SMTP работает сэр, но я думаю, что проблема заключается в получении адреса электронной почты из базы данных. – 2009-03-12 22:13:04

3

чек вы запрашиваете к значению переменной выходной дб & в этот момент в сценарии. убедитесь, что он возвращает желаемое значение для $ EmailADD.

сделать var_dump ($ EmailADD, true);

или попробуйте где-нибудь вывести результат этого запроса. Если вы действительно получаете значение электронной почты из этого запроса, я не понимаю, почему он не должен работать, особенно когда вы упоминаете, что прямое назначение значения напрямую; без запроса sql.

+1

+1: У меня была ошибка с сообщением, и неверный адрес электронной почты в методе AddAddress был именно моей проблемой. – James

4

Это также помогает, если вы не превысили лимит ежедневной отправки информации о спаме в Google.

+2

Возможно, будет полезно использовать ссылку источника или фактический лимит. – JSuar

+0

Это ответ .. Я думаю, что они ограничивают вас 1000 или менее электронными письмами в день (исходящие через SMTP) – reefine

+0

Источник: https://support.google.com/a/answer/166852 – Ajax

7

Большинство раз, когда я видел это сообщение, письмо успешно отправляется в любом случае, но не всегда. Для отладки, установите:

$mail->SMTPDebug = true; 

Вы можете повторить отладочные сообщения или войти используя их error_log():

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

Вероятным кандидатом, особенно на сильно загруженном сервере являются SMTP таймауты:

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

class.smtp.php также имеет свойство Timelimit, используемое для чтения с сервера.

+0

У меня был файл, который была слишком большой для отправки, и советы по отладке помогли мне это определить. Благодаря! – Nick

+1

СПАСИБО АНИМИЗМ !!!!! Для всех тех, у кого есть ошибки RANDOM «Данные не приняты», код, который вы «ЗНАЕТ», работает в другом месте (и ваш «новый сервер» действует), попробуйте установить свой $ mail-> Timeout на что-то большее, чем 10 (60 работает отлично ..).Я пытался узнать, что вызывает это в течение нескольких недель, и мне не повезло, пока я не нашел этот пост. Некоторые серверы, по-видимому, просто не справляются с 10-секундным дефолтом и нуждаются в небольшом дополнительном umph в этой области. Не верьте? Попробуйте установить это на что-то еще меньше 10, например 5 или 2. Чем пытаться установить 60, обратите внимание, что это непротиворечиво! – NinjaKC

Смежные вопросы