PHPmailer не отправляет электронные письма - PullRequest
1 голос
/ 08 сентября 2011

Я пытаюсь отправить письмо через сервер Qmail, используя phpmailer.После отправки я получаю сообщение «сообщение отправлено», но каждое сообщение не получено. Вот мой код:

<?php
require("class.phpmailer.php");
$name = "Purchase Form";
$email_subject = "New Purchase Ticket";
$body = NULL;
foreach ($_REQUEST as $field_name => $value){
if (!empty($value)) $body .= "$field_name = $value\n\r";
}
$mail = new PHPMailer();
$mail->IsQmail();
$mail->FromName = $name;
$mail->AddAddress('*******@*********', 'Purchase Ticket');
$mail->Body = $body;
$mail->IsHTML(false);
$mail->Subject = $email_subject;
if(!$mail->Send())
{  echo "didnt work";
}
else {echo "Message has been sent";}

?>

В командной строке я могу ввести mail *****@****.com blah blah, и он успешно отправляет ..

Ответы [ 3 ]

2 голосов
/ 08 сентября 2011

Проверьте журнал вашего почтового сервера.Сервер активен?Это обрабатывает почтовую очередь?Он пытался отправить сообщение?Сообщение отскочило?Сообщение застряло в очереди?

То, что PHPMailer говорит, что оно сработало, не означает, что что-то действительно получилосьВсе это означает, что PHPMailer успешно передал электронную почту на SMTP-сервер.После этого он полностью не в руках PHPMailer.Поскольку все со стороны PHP, похоже, сработало, вам придется перенести расследование на следующую стадию процесса - SMTP-сервер.

0 голосов
/ 08 октября 2011

Я думаю, что это проблема CR / LF, которая является известной ошибкой в ​​php около четырех лет и, насколько я знаю, до сих пор не исправлена:

http://bugs.php.net/bug.php?id=15841

Сгенерированный адрес электронной почты недействителен (объяснение можно найти здесь: http://cr.yp.to/docs/smtplf.html) из-за использования формата разрыва строки, не соответствующего RFC. Другие MTA, такие как sendmail и postfix, исправляют эту проблему автоматически; qmail нет.

Вы можете: написать правильную почту с помощью php ( lol ) или попросить своего администратора qmail использовать QmailScanner (http://qmail -scanner.sourceforge.net / ) , который делает эту работу тоже.

Лучшим решением было бы удалить php и использовать perl в будущем duck ;)

0 голосов
/ 08 сентября 2011

Убедитесь, что ваш сервер позволяет отправлять в качестве пользователя, который вы указали в качестве FromName

...