2013-04-08 10 views
20

Я пытаюсь выяснить эту проблему в течение 6 часов. Но ничего не имеет смысла. Вот сценарий; Существует хорошо отформатированный шаблон HTML.phpmailer - Следующая ошибка SMTP: данные не принимаются

$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.

Я надеюсь, что я объяснил

+0

Вы хотите отправить через внешний SMTP-сервер? Если нет, то нет нужды в этой строке: '$ mail-> IsSMTP();' если да, настройте свойства smtp php mailer. – Kovge

+0

Я использую 'SMTP-сервер'. Он был настроен администратором сервера. И он работает нормально. Но иногда электронные письма не отправляются. –

+0

Сервер smtp находится на том же сервере, где находится ваш код? – Kovge

ответ

30

сервер dosen't позволяют разные отправителя и имя пользователя вы должны конфиг: $mail->From как $mail->Username

+4

Я не понимаю, почему у этого много повышенного значения, и он принял правильный ответ. Что означает ответ? Msgstr "Вы должны настроить: $ mail-> От имени $ mail-> Username"? Звучит очень расплывчато. – PinoyStackOverflower

+0

@PinoyStackOverflower вы видели, что комментарий «ваш сервер не разрешает разные отправители и имя пользователя» –

+1

Это не то, что я указываю. Вы видели мой комментарий? 'Вы должны настроить: $ mail-> From like $ mail-> Username"? Звучит очень неопределенно.' – PinoyStackOverflower

4

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

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

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

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

+0

Используйте свое предложение, и оно работает как шарм для Outlook. Благодарю. – dchayka

0

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

5

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

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

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

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

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

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

И вы все настроены.

+1

уже проверен (весь домен, адрес отправителя, электронная почта получателя), но по-прежнему получает ту же проблему –

1

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

1

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

$email->SMTPDebug = true; 
3

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

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

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

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

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