Я пытаюсь выяснить эту проблему в течение 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> abcdf@somedomain.com<br /> <b>Message :</b> Here is the message info<br /> ';
Вот массив писем получателей;
$recipients = array("abc@something.com","xyz@somtehing.com");
Все выглядит нормально, а электронная почта готова к отправке. Вот конфигурация phpmailer;
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->From = "noreply@something.com"; $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.
Надеюсь, я объяснил
ваш сервер не разрешает другим отправителям и имени пользователя, которые вы должны настроить: $mail->From
like $mail->Username
Для пользователей AWS, которые работают с SES Amazon совместно с PHPMailer, эта ошибка также появляется, когда ваш отправитель «from» не является проверенным отправителем.
Чтобы добавить проверенного отправителя:
1.) Войдите в свою консоль Amazon AWS: https://console.aws.amazon.com
2.) Выберите «Amazon SES» из списка доступных приложений AWS
3.) В разделе «Проверенные отправители» выберите «Адреса электронной почты» -> «Проверить новый адрес электронной почты»,
4.) Перейдите к электронной почте этого нового отправителя, нажмите ссылку подтверждения по электронной почте.
И все готово.
Над определённым сообщением размера, оно испортит контент при настройке через $ mail-> Body.
Вы можете проверить его, если он хорошо работает с небольшими сообщениями, но не работает с более крупными (более 4-6 кБ), то это проблема.
Кажется, проблема $ mail-> Body, поэтому вы можете обойти это, установив тело HTML вручную через $ mail-> MsgHTML ($ message). И тогда вы можете попытаться добавить тело non-html только $ mail-> AltBody.
Надеюсь, что я могу помочь, не стесняйтесь предоставлять более подробную информацию, информацию.
Попробуйте установить порт на 26, это устранило мою проблему с сообщением «данные не приняты».
установите phpmailer для работы в отладке, чтобы увидеть «реальную» ошибку за общим сообщением «Ошибка SMTP: данные не приняты», в нашем случае текст в сообщении запускал SMTP-фильтр smtp-сервера.
$email->SMTPDebug = true;
Интересно, что у меня была такая же точная проблема, и для меня проблема заключалась в том, что моя связь была отключена. Чтобы иметь возможность видеть более подробную информацию о моих подключениях, я добавил $ mail-> SMTPDebug = 4; на мой phpmailer (посмотрите, как захватить отладку, поскольку функция вывода по умолчанию – это эхо).
Вот результат:
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;
У меня возникла такая же проблема. В моем случае почта отправки была отключена, потому что мой сервер Exchange ретранслировал электронную почту на сервер в Интернете. Этот сервер превысил квоту пропускной способности. По-видимому, у php-mailer есть встроенный тайм-аут, и это было недостаточно долго, чтобы увидеть фактическое сообщение.
Мы отправляем электронную почту через SMTP-серверы Gmail, и мы иногда получаем эту точную ошибку от PHPMailer, когда попадаем в пределы отправки Gmail .
Вы можете проверить, происходит ли это с вами, перейдя в Gmail и пытаясь вручную отправить электронное письмо. В нашем случае это отображает более полезное сообщение об отправке ограничений.