Подтвердить что ты не робот

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.

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

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

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

И все готово.

Ответ 3

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

  $email->SMTPDebug = true;

Ответ 4

Интересно, что у меня была та же самая проблема, и для меня проблема была в том, что мое соединение истекло. Чтобы увидеть больше подробностей о моих соединениях, я добавил $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;

Ответ 5

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

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

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

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

Ответ 6

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

$mail->Body    = $message;

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

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

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

$mail->MsgHTML = $message;
$mail->AltBody = $message;

Ответ 7

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

Ответ 8

Я ударил эту ошибку с 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, который вы добавляете - учитывается наименьшая детализация.

Ответ 9

Во-первых, лучше установить TRUE для debug:

$email->SMTPDebug = true;

Или временное изменение значения public $ SMTPDebug = false; в классе PHPMailer.

И тогда вы можете увидеть полный журнал в браузере. Для меня это было слишком много писем в секунду:

...
SMTP -> FROM SERVER:XXX.XX.XX.X Ok
SMTP -> get_lines(): $data was ""
SMTP -> get_lines(): $str is "XXX.XX.XX.X Requested action not taken: too many emails per second "
SMTP -> get_lines(): $data is "XXX.XX.XX.X Requested action not taken: too many emails per second "
SMTP -> FROM SERVER:XXX.XX.XX.X Requested action not taken: too many emails per second
SMTP -> ERROR: DATA command not accepted from server: 550 5.7.0 Requested action not taken: too many emails per second
...

Таким образом, я узнал, в чем именно заключалась проблема.

Ответ 10

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

Ответ 11

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

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

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

Ответ 12

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

Ответ 13

Если вы используете SMTP-шлюз Office 365, то "Ошибка SMTP: данные не приняты". это ответ, который вы получите, если почтовый ящик заполнен (даже если вы просто отправляете с него).

Попробуйте удалить некоторые сообщения из почтового ящика.

Ответ 14

В моем случае проблема была с содержанием почты. Когда я изменил содержание на более простое без HTML, это сработало. Но после обновления phpmailer все решено.

Ответ 15

У меня точно такая же проблема. Интересно, как это работает. Я использую mailpoet в качестве клиента. Подтвержденный адрес электронной почты SES: [email protected] В настройках mailpoet Отправитель от - это Имя моего сайта; адрес электронной почты: [email protected] Тот же ответ - [email protected]

Какие изменения я должен сделать, чтобы решить это?