it-roy-ru.com

phpmailer - следующая ошибка SMTP: данные не принимаются

Я пытаюсь выяснить эту проблему в течение 6 часов. Но в этом нет ничего смысла. Вот сценарий; Есть хорошо отформатированный шаблон HTML.

$mail_body = '
    <b>Message Num :</b> 769<br />
    <b>Message Date :</b> 2013-04-08 09:03:21<br />
    <b>Name :</b> John Doe<br />
    <b>Phone :</b> 123456789<br />
    <b>E-mail :</b> [email protected]<br />
    <b>Message :</b> Here is the message info<br />
';

Вот массив писем получателей;

$recipients = array("[email protected]","[email protected]");

Все выглядит отлично и электронная почта готова к отправке. Вот конфиг phpmailer;

$mail = new PHPMailer(); 
$mail->IsSMTP();
$mail->From = "[email protected]"; 
$mail->FromName = "TEST";
$mail->WordWrap = 50;

foreach($recipients as $mail_add) {
    $mail->AddAddress($mail_add);
}
$mail->IsHTML(true);
$mail->Subject = "TEST Subject";
$mail->Body = $mail_body;
if(!$mail->Send()) {
    echo $mail->ErrorInfo;
} else { 
        echo "Mail sent...";
}

Все то же самое, когда я проверяю это. Но иногда письмо отправлялось. Иногда это не было отправлено. Дайте мне следующую ошибку: The following SMTP Error: Data not accepted.

Надеюсь я объяснил

26
Yasin Yörük

ваш сервер не позволяет использовать другого отправителя и имя пользователя вам нужно настроить: $mail->From подобно $mail->Username

37
css.cutter

Для пользователей AWS, которые работают с Amazon SES в сочетании с PHPMailer, эта ошибка также появляется, когда ваш отправитель почты «из» не является подтвержденным отправителем.

Чтобы добавить проверенного отправителя:

  1. Войдите в консоль Amazon AWS: https://console.aws.Amazon.com

  2. Выберите «Amazon SES» из списка доступных приложений AWS

  3. В разделе «Проверенные отправители» выберите «Адреса электронной почты» -> «Подтвердить новый адрес электронной почты».

  4. Перейдите к электронному письму нового отправителя, нажмите на ссылку для подтверждения.

И все готово.

8
Jonathan LeRoux

Интересно, что у меня была та же самая проблема, и для меня проблема была в том, что мое соединение истекло. Чтобы увидеть больше информации о моих соединениях, я добавил $ mail-> SMTPDebug = 4; на мой phpmailer (посмотрите, как перехватить отладку, так как функция вывода по умолчанию - echo).

Вот результат:

SMTP -> get_lines(): $data was ""
SMTP -> get_lines(): $str is ""
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): timed-out (10 seconds)
SMTP -> FROM SERVER:
SMTP -> ERROR: DATA not accepted from server: 

Время ожидания по умолчанию установлено на 10 секунд. Если ваше приложение может поддерживать больше, добавьте эту строку в ваш phpmailer:

$mail->Timeout = 20;
8
phoenix

При определенном размере сообщения оно портит содержимое при настройке через $ mail-> Body.

Вы можете проверить его, если он хорошо работает с небольшими сообщениями, но не работает с большими (более 4-6 КБ), то это проблема.

Кажется, это проблема $ mail-> Body, поэтому вы можете обойти это, установив тело HTML вручную через $ mail-> MsgHTML ($ message). И тогда вы можете попытаться добавить не-HTML-тело только $ mail-> AltBody.

Надеюсь, что я мог помочь, не стесняйтесь предоставить более подробную информацию, информацию.

4
Adam Szabo

установите phpmailer для работы в режиме отладки, чтобы увидеть «настоящую» ошибку, стоящую за общим сообщением «Ошибка SMTP: данные не приняты», в нашем случае текст в сообщении вызывал спам-фильтр сервера smtp.

  $email->SMTPDebug = true;
4
zzapper

Попробуйте установить порт на 26, это исправило мою проблему с сообщением «данные не приняты».

1
Matteo

Я использовал только

$mail->Body    = $message;

и для некоторых связанных форм PHP возвращал ошибку:

Ошибка SMTP: данные не приняты. Ошибка сервера SMTP: сбой команды DATA END. Подробно: Это сообщение было классифицировано как СПАМ и может быть не доставлено Код SMTP: 550

Я исправил добавление этого кода после $ mail-> Body = $ message:

$mail->MsgHTML = $message;
$mail->AltBody = $message;
0
André A.

Мы отправляем электронную почту через SMTP-серверы Gmail, и иногда получаем именно эту ошибку от PHPMailer, когда достигаем наших ограничений на отправку Gmail

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

https://support.google.com/a/answer/166852?hl=ru

0
brismuth

В моем случае в cpanel у меня есть опция «Зарегистрировать почтовые идентификаторы», где я добавляю свой адрес электронной почты, и через 30 минут он отлично работает с простой функцией php mail.

0
Dinesh Gurjar

Я нажал эту ошибку с phpMailer + Amazon SES. Ошибка phpMailer не очень наглядна:

2: message: SERVER -> CLIENT: 554 Transaction failed: Expected ';', got "\"
1: message: 
2: message: SMTP Error: data not accepted.

Для меня проблема была просто в том, что у меня было следующее в качестве типа контента:

$phpmailer->ContentType = 'text/html; charset=utf-8\r\n';

Но в нем не должно быть перевода строки:

$phpmailer->ContentType = 'text/html; charset=utf-8';

... Я подозреваю, что это был устаревший код из нашей старой версии. Таким образом, в основном, тройная проверка каждого параметра $ phpmailer, который вы добавляете - учитывается наименьшая детализация.

0
Woody Hayday

Я испытывал эту же проблему. В моем случае время отправки почты истекло, потому что мой сервер Exchange пересылал почту на сервер в Интернете. Этот сервер превысил квоту на пропускную способность. Очевидно, у php mailer есть встроенный тайм-аут, и он не был достаточно длинным, чтобы увидеть реальное сообщение.

0
geekinit