I’m trying to figure out this issue for 6 hours. But there is nothing to make sense. Here is the scenario; There is a well formatted HTML
template.
$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 />
';
Here is the array of recipients’ mails;
$recipients = array("abc@something.com","xyz@somtehing.com");
Everything looks fine and email ready to send.Here is the phpmailer config;
$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...";
}
Everything is same when I test it. But sometimes email was sent. Sometimes it was not sent. Give me the following error : The following SMTP Error: Data not accepted.
I hope I explained
asked Apr 8, 2013 at 13:14
12
your server dosen’t allow different sender and username
you should config: $mail->From
like $mail->Username
pb2q
58.4k19 gold badges146 silver badges147 bronze badges
answered Jan 2, 2014 at 16:54
J HaJ Ha
1,17212 silver badges16 bronze badges
7
set phpmailer to work in debug to see the «real» error behind the generic message ‘SMTP Error: data not accepted’ in our case the text in the message was triggering the smtp server spam filter.
$email->SMTPDebug = true;
answered Feb 4, 2016 at 9:46
zzapperzzapper
4,6835 gold badges48 silver badges45 bronze badges
1
For AWS users who work with Amazon SES in conjunction with PHPMailer, this error also appears when your «from» mail sender isn’t a verified sender.
To add a verified sender:
-
Log in to your Amazon AWS console: https://console.aws.amazon.com
-
Select «Amazon SES» from your list of available AWS applications
-
Select, under «Verified Senders», the «Email Addresses» —> «Verify a new email address»
-
Navigate to that new sender’s email, click the confirmation e-mail’s link.
And you’re all set.
Uwe Keim
39.3k56 gold badges174 silver badges291 bronze badges
answered Aug 29, 2014 at 1:21
2
Interestingly, I had the same exact issue and for me the problem was that my connection was timing out. To be able to see more details on my connections, I added $mail->SMTPDebug = 4;
to my phpmailer (look up how to capture the debug since the default output function is echo).
Here’s the result:
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:
The default timeout is set to 10 seconds. If your app can support more, add this line to your phpmailer:
$mail->Timeout = 20;
Nicolas Raoul
58.4k58 gold badges221 silver badges370 bronze badges
answered Mar 8, 2017 at 16:22
phoenixphoenix
1,60120 silver badges11 bronze badges
3
Over a certain message of size, it messes up the content when setting through $mail->Body.
You can test it, if it works well with small messages, but doesn’t work with larger (over 4-6 kB), then this is the problem.
It seems to be the problem of $mail->Body, so you can get around this by setting the HTML body manually via $mail->MsgHTML($message). And then you can try to only add the non-html body by $mail->AltBody.
Hope that I could help, feel free to provide more details, information.
answered Apr 12, 2013 at 15:36
Adam SzaboAdam Szabo
11.3k18 gold badges64 silver badges100 bronze badges
1
I was using just
$mail->Body = $message;
and for some sumbited forms the PHP was returning the error:
SMTP Error: data not accepted.SMTP server error: DATA END command failed Detail: This message was classified as SPAM and may not be delivered
SMTP code: 550
I got it fixed adding this code after $mail->Body=$message :
$mail->MsgHTML = $message;
$mail->AltBody = $message;
answered Mar 22, 2018 at 17:00
3
Try to set the port on 26, this has fixed my problem with the message «data not accepted».
answered Dec 5, 2014 at 15:06
We send email via the Gmail SMTP servers, and we get this exact error from PHPMailer sometimes when we hit our Gmail send limits.
You can check if it’s the same thing happening to you by going into Gmail and trying to manually send an email. In our case that displays the more helpful error message about sending limits.
https://support.google.com/a/answer/166852?hl=en
answered Jul 18, 2017 at 6:08
brismuthbrismuth
35.7k3 gold badges32 silver badges37 bronze badges
I was hitting this error with phpMailer + Amazon SES. The phpMailer error is not very descriptive:
2: message: SERVER -> CLIENT: 554 Transaction failed: Expected ';', got ""
1: message:
2: message: SMTP Error: data not accepted.
For me the issue was simply that I had the following as content type:
$phpmailer->ContentType = 'text/html; charset=utf-8rn';
But that it shouldn’t have the linebreak in it:
$phpmailer->ContentType = 'text/html; charset=utf-8';
… I suspect this was legacy code from our older version. So basically, triple check every $phpmailer setting you’re adding — the smallest detail counts.
answered Feb 26, 2019 at 14:37
First you better set debug to TRUE:
$email->SMTPDebug = true;
Or temporary change value of public $SMTPDebug = false; in PHPMailer class.
And then you can see the full log in the browser.
For me it was too many emails per second:
...
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
...
Thus I got to know what was the exact issue.
Nicolas Raoul
58.4k58 gold badges221 silver badges370 bronze badges
answered May 9, 2019 at 11:52
SadeeSadee
2,98235 silver badges36 bronze badges
I was experiencing this same problem. In my instance the send mail was timing out because my Exchange server was relaying email to a server on the internet. That server had exceeded it’s bandwidth quota. Apparently php mailer has some built in timeout and it wasn’t long enough to see the actual message.
answered Nov 19, 2013 at 2:50
geekinitgeekinit
1,3452 gold badges14 silver badges17 bronze badges
In my case in cpanel i have ‘Register mail ids’ option where i add my email address and after 30 minutes it works fine with simple php mail function.
answered Feb 7, 2019 at 13:15
If you are using the Office 365 SMTP gateway then «SMTP Error: data not accepted.» is the response you will get if the mailbox is full (even if you are just sending from it).
Try deleting some messages out of the mailbox.
answered Mar 6, 2019 at 9:06
beingalexbeingalex
2,4064 gold badges32 silver badges71 bronze badges
In my case the problem was with the content of mail. When I changed content to simpler content without HTML, it worked. But after updating the phpmailer everything solved.
answered Mar 7, 2019 at 12:32
NightOwlNightOwl
3292 silver badges20 bronze badges
in my case I was using AWS SES and I had to verify both «FromEmail» and «Recipient». Once done that I could send without problems.
answered Feb 5, 2020 at 4:04
Mailgun sanbox error
With $PHPMailer->SMTPDebug = true;
I found out that when using the mailgun sandbox domain, the email has to be added to an authorized recipients list (which is on the right panel of the sandbox domain overview)
answered Jun 1, 2021 at 7:25
It happen too, when you used stripslashes or addslashesh or real_escape_string.
Avoid these things inside email body, when your email execution code completed then you can add these lines in bottom.
answered Mar 2, 2022 at 15:29
0
Будучи менеджером коммерческого отдела небольшой торговой компании, я выполнял задачу по отправке нескольких сотен писем постоянным и потенциальным клиентам. Базу формировали из открытых источников мы сами, предложение было реально интересным целевой аудитории. Возникла «неожиданная» проблема – часть писем стала возвращаться. Кроме того, начали приходить сообщения с указаниями кодов ошибки SMTP. Своего IT-специалиста в штате у нас не было, потому разобраться с проблемой я решил самостоятельно. О результатах этой работы, причинах возникновения таких ошибок и методах их решения расскажу в этой статье.
Как избежать ошибок при составлении и отправке писем
Причинами возникновения ошибок и, как следствие, неполучения сообщений могут служить разные факторы. Одни из них связаны с неправильным составлением исходящих писем самим пользователем, другие относятся к более глобальным программным настройкам со стороны получателя.
Самый простой способ это понять – отправить тестовое сообщение на свой ящик. Затем следует протестировать его отправку и получение, используя разные внешние почтовые сервисы: gmail, yandex, mail, rambler и другие. Если сообщение получено, следует ответить на него, проверив корректность исполнения команды «RE» вашим почтовым сервером и принятие ответа условным отправителем.
Довольно часто проблемы с попаданием писем в папку «Спам» или программной блокировкой на стороне получателя лежат в неверном оформлении ключевых полей. Особенно это касается массовых рассылок коммерческого характера. Для отправки большого количества однотипных сообщений как минимум потребуется выполнение следующих параметров настройки:
- выделенный IP-адрес с целью исключить блокировку на стороне сервера-ретранслятора или почтовой программы конечного получателя;
- криптографические подписи DKIM и SPF, помогающие подтвердить подлинность домена и минимизировать количество писем, воспринимаемых как спам.
Важно! В случае несоблюдения этих элементарных правил вы рискуете не только тем, что конкретное письмо не будет доставлено адресату. При многократных попытках отправки письма в большинстве почтовых программ в блок-лист попадет вся корреспонденция, отправляемая с вашего email, и даже корпоративный домен (@domain.***).
Некорректное использование бота для отправки писем может привести к блокировке отправителя и другим нежелательным последствиям. Даже если информация, которую вы отправляете потенциальным клиентам, реально интересна им, система спам-фильтрации может воспринять данную рассылку как вредоносную. Чтобы избежать этого, лучше всего воспользоваться услугами специализированных компаний.
В моей практике был случай, когда никак не удавалось добиться получения моей электронной корреспонденции одним из сотрудников компании «Лукойл». Письма я отправлял самые простые, используя корпоративный ящик. Только после того, как мой респондент обратился в IT-службу своего предприятия, выяснилось, что данный адрес находится в блэк-листе. Попал он туда из-за каких-то ошибок, допущенных моим предшественником. Понадобилось больше недели, чтобы адрес включили в «белый список». Все это время письма, высылаемые с личного mail@yandex.ru, доходили без проблем.
Полезно: Почему не приходят письма с сайта. Пример частного случая.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Положительные и отрицательные сообщения SMTP-сервера
SMTP (Simple Mail Transfer Protocol) — это протокол, используемый большинством почтовых программ для отправки электронных сообщений в сети интернет. Некорректное взаимодействие между серверами, индивидуальные настройки на уровне программного обеспечения и многие другие причины приводят к появлению ошибок. В этом случае письма не доходят до получателей, возвращаются обратно или просто «пропадают». При возникновении таких ситуаций отправитель получает сообщение о наличии конкретной ошибки, отражающей SMTP-код последнего отклика сервера.
Данные коды являются трехзначными, каждая его часть несет в себе определенную информацию, расшифровывающую причину сбоя.
Первая цифра комбинации содержит информацию о качестве доставки:
- сообщение доставлено («SMTP OK»);
- возникла неизвестная или временная проблема («SMTP unknown»);
- критическая ошибка («SMTP error»).
Существует четыре варианта значений для первой цифры кода:
- 2xx – положительный результат, есть возможность передачи следующей команды;
- 3xx – отложенный результат, необходимо осуществление дополнительных действий;
- 4xx – сообщение не принято, но проблема носит временный характер, и запрос может быть повторен через какое-то время;
- 5xx – категорический отказ выполнения команды, отправка запроса со стороны передающего сервера в том же виде невозможна.
Вторая цифра в коде сообщает о категории ответа:
- 0 – синтаксические ошибки;
- 1 – ответы на запросы информации;
- 2 – ошибки канала передачи;
- 3 и 4 – неизвестный тип ошибки;
- 5 – статус почтовой системы.
Третья цифра дает более расширенную информацию о значении, указанном во второй цифре SMTP-ответа.
Помимо цифровой комбинации, SMTP-сообщение может содержать дополнительную текстовую информацию.
Полную информацию о кодах, их компоновке и значениях можно найти в спецификациях RFC 5321 и RFC 1893.
Следует учитывать, что SMTP-message говорит об успешном или неудачном варианте доставки именно на уровне взаимодействия почтовых серверов. Положительный ответ вовсе не означает, что ваше письмо не попало в папку «Спам».
Читайте также
Виды почтовых сервисов
На программном уровне существует несколько видов обработки электронной почтовой корреспонденции. К первой группе относятся виртуальные сервисы, доступные чаще всего в бесплатном исполнении через интернет-соединение на сайте почтового сервера. Это всем известные ресурсы:
- Gmail/Google Suite (почта от Google.com);
- Yandex.ru;
- Mail.ru;
- Rambler.ru и другие.
Более подробную информацию о значениях ответов SMTP можно получить на сайтах популярных почтовых сервисов:
- Коды ошибок SMTP почтового сервиса Gmail (Google Suite) (support.google.com)
- Создание и отправка писем на сервисе Яндекс
- Ошибки отправки писем при использовании сервера и сервиса Mail.ru
Ко второй группе относятся почтовые клиенты – программы, обладающие более расширенным функционалом, чем виртуальные сервисы. Наиболее популярными и универсальными почтовыми клиентами для Windows являются:
- Opera Mail;
- Mozilla Thunderbird;
- Koma-Mail;
- SeaMonkey;
- The Bat!;
- Microsoft Outlook.
Принципы работы почтовых клиентов несколько отличаются от процесса обработки корреспонденции виртуальными серверами. При отправке сообщения программа отсылает его не напрямую конечному получателю, а ретранслирует через сервер-релей. Этот процесс осуществляется чаще всего с использованием протокола SMTP, а получение корреспонденции обычно происходит с помощью IMAP или POP.
Коды SMTP-ответов определяются стандартом. Администратор почтового сервера может создать собственные настройки, в том числе и в части кодировки ответов сервера. Особенно это касается локальных почтовых программ, установленных непосредственно на сервере какой-нибудь компании.
О вариантах выбора и способах создания корпоративных почтовых сервисов более подробно можно прочитать здесь: Что такое почтовый сервер и зачем он нужен.
Классификация отрицательных SMTP-сообщений. Способы решения проблем
Я настроил свою почтовую программу – локальный клиент (MS Outlook и т.п.) или бесплатную почту на gmail или yandex. Начинаю отправлять письма, но сталкиваюсь с различными проблемами, связанными с тем, что мои респонденты не получают направленную им корреспонденцию. Соответственно, на мой ящик приходят сообщения об ошибках в виде кодировок SMTP.
Сразу опускаю тот пакет сообщений, которые начинаются с 2хх и 3хх, так как они содержат информацию о том, что задача получения письма уже решена положительно либо получит такой статус в ближайшее время. Более подробно рассмотрим некоторые виды кодированных сообщений, начинающихся с 4хх и 5хх, т.е. отклики SMTP-сервера, которые сообщают о наличии проблем.
Почтовый сервер сообщил об ошибке 421
Значение: Service Not Available. Сервер недоступен: канал связи будет закрыт.
Возможные причины |
Варианты решения |
Неправильно заданы параметры SMTP-соединения |
Необходимо перепроверить настройки |
Брандмауэр блокирует IP-адрес сервера электронной почты |
Необходимо создать новое правило в брандмауэре |
Блокируется трафик через порт 25 |
Попробуйте в настройках учетной записи электронной почты сменить номер порта SMTP на 465 |
Проблема использования VPN |
Необходимо, чтобы провайдер услуги занес ваш почтовый сервер в белый список адресов VPN |
Данная ошибка возникает наряду с грейлистингом (Greylisting – «Серый список») при интенсивном использовании бесплатного SMTP-сервера, который лимитирует количество отправляемых сообщений в единицу времени. Для решения этой проблемы можно воспользоваться высоконагруженным SMTP-сервером. Чаще всего эта услуга является платной.
Получено сообщение с кодом 451
Значение: Requested action aborted: local error in processing. Требуемое действие прерывалось: ошибка в обработке.
Возможные причины |
Варианты решения |
Превышено количество допустимых подключений или лимит обмена сообщениями за отрезок времени, письма ждут отправки в очереди |
В настройках сервера увеличить лимит или задать ограничение не на количество подключений, а на количество писем на одного пользователя. Накопившуюся очередь писем можно отправить повторно командой «force send» |
Неправильно настроены MX-записи домена, из-за чего происходит неправильная маршрутизация писем |
Проверьте логи, конфигурационные файлы, МХ-записи и разрешения, внесите корректировки |
Устранение проблем с доставкой электронной почты для кода ошибок 451 4.7.500–699 (ASxxx) в Exchange Online. Электронная почта из доменов onmicrosoft.com ограничена и фильтруется для предотвращения спама.
Необходимо добавить настраиваемый домен.
Ошибка почтового сервера 452
Значение: Insufficient system resources. Запрашиваемое действие не выполнено: недостаточно места в системе.
Возможные причины |
Варианты решения |
На сервере получателя закончилось место, поэтому письмо не доставляется |
Чтобы в этом убедиться, достаточно попробовать осуществить отправку письма с другого сервера |
В сообщении присутствует текст «Out of memory». Это значит, что недостаточно места на вашем сервере |
Необходимо проверить количество отправляемых писем в очереди, наличие свободного места на диске и объем доступной памяти |
В Microsoft Exchange Server есть специальный компонент мониторинга доступных ресурсов Back Pressure, который отслеживает свободное место на диске, на котором хранятся очереди транспортной службы Exchange. При возникновении такой ошибки можно сделать следующее:
- очистить диск от ненужных файлов;
- отключить мониторинг Back Pressure (не рекомендуется);
- перенести транспортную очередь на другой диск достаточного объема.
Сервер сообщил об ошибке SMTP 550
Значение: Mailbox unavailable. Требуемые действия не предприняты: электронный ящик недоступен
Возможные причины |
Варианты решения |
Неверно указан email-адрес получателя |
Необходимо связаться с адресатом альтернативным способом и уточнить правильность написания адреса, а также убедиться, что он является действующим |
Система заражена вирусом, осуществляющим массовую рассылку писем с вашего адреса |
Провести полную проверку специализированной антивирусной программой |
На стороне вашего интернет-провайдера установлены ограничения на отправку исходящих сообщений |
Необходимо связаться с поставщиком интернет-услуг и получить консультацию по устранению данной проблемы |
Сервер получателя не работает |
Отправьте тестовое письмо на другой почтовый сервер. Свяжитесь с получателем и сообщите о проблеме |
Данная ошибка может возникнуть из-за настроек программы Антиспам на стороне получателя. Проверьте корректность оформления вашего письма и другие параметры, по которым ваше сообщение может быть отнесено к нежелательным.
Почтовый сервер ответил ошибкой 571
Значение: SMTP Protocol Returned a Permanent Error 571 xxx@mail.ru prohibited. We do not relay/Spam message rejected. Ошибка на стороне получателя почты.
Возможные причины |
Варианты решения |
Ваш IP-адрес заблокирован на стороне конечного получателя спам-фильтром, антивирусом или файрволом |
Данную проблему может решить только администратор сети получателя, исключив ваши идентификационный данные из списка блокировки или добавив их в «белый список» |
Неверные учетные данные ретранслятора. У вас нет разрешения на отправку электронной почты через сервер, который находится между вами и получателем |
Обратитесь к администратору данного ресурса для изменения настроек |
У IP отправителя нет RDNS |
Проверьте настройки получения писем и разрешения для доменов-отправителей |
Как я уже писал выше, разные почтовые серверы накладывают свои ограничения на прием и отправку сообщений. Код 571 в Google Suite расшифровывается следующим образом: «Действующая политика запрещает отправку этого сообщения». Письмо может содержать защищенные или конфиденциальные данные – номера кредитных карт и т.п. Или политика администрирования запрещает отправку определенными пользователями сообщений адресатам вне установленной группы.
Сертификат почтового сервера недействителен
Обычно с таким сообщением приходится сталкиваться пользователям, у которых настроен Microsoft Exchange Server/MS Outlook. В данной ситуации самое простое решение – обновить сертификат.
Проверка доступности почтового сервера программным методом
В данной статье описаны лишь некоторые варианты ошибок, которые могут возникнуть при отправке электронных сообщений. Полный перечень достаточно объемен и во многом зависит от настроек конкретного сервера как на стороне отправителя, так и получателя. Некоторые из ошибок могут быть легко устранены обычным пользователем, другие под силу лишь опытным администраторам.
Одним из способов предупреждения появления ошибок является онлайн-проверка доступности почтового сервера с помощью бесплатных инструментов:
- https://mxtoolbox.com
- https://www.ultratools.com
- http://mail2web.com
Эти сервисы пробуют подключиться к почтовому серверу по SMTP, подтверждают, что у него есть запись обратной зоны DNS, и замеряют время отклика. С их помощью можно диагностировать некоторые ошибки службы почтовых серверов или проверить, не занесен ли данный ресурс в черные списки из-за спама.
Прочитав эту статью, обратите внимание на то, как настроен ваш почтовый сервер на получение сторонних писем по SMTP-протоколу. Быть может, в данный момент ваш антиспам или локальная политика фильтрации входящих сообщений блокирует получение очень важного и нужного для вас месседжа? Проверьте сами или обратитесь к системному администратору. Если ошибку с SMTP никак не удается решить, то попробуйте обратиться в службу поддержки почтового сервера.
Сообщение об ошибке/код:
SMTP Error: Data not accepted.
Описание:
Сообщение об ошибке «Data not accepted» поступает c вашего SMTP-сервера.
Обычно сообщение приходит в случае, когда электронное письмо не удалось отправить из-за того, что SMTP-сервер его отклонил.
Решение:
Обратитесь за помощью в техническую поддержку по обслуживанию вашего хостинга, поскольку проблема вызвана на стороне сервера.
Я пытаюсь выяснить эту проблему в течение 6 часов. Но ничего не имеет смысла. Вот сценарий; Существует хорошо отформатированный HTML
шаблон.
Все выглядит нормально, а электронная почта готова к отправке. Вот конфигурация phpmailer;
Все так же, когда я его тестирую. Но иногда отправлялось электронное письмо. Иногда его не отправляли. Дайте мне следующую ошибку: The following SMTP Error: Data not accepted.
- PHPMailer Скрыть аутентификацию SMTP?
- Изменение адреса `from` при отправке электронной почты через GMail
- Обработка ошибок электронной почты Codeigniter
- Как проверить, что сертификат TLS SMTP действителен в PHP?
- fgets () и fread () — В чем разница?
ваш сервер не разрешает другим отправителям и имени пользователя, которые вы должны настроить: $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 и пытаясь вручную отправить электронное письмо. В нашем случае это отображает более полезное сообщение об отправке ограничений.
https://support.google.com/a/answer/166852?hl=en
SMTP-сервер — это программное обеспечение для отправки электронных писем, использующее SMTP протокол. Напомним, что вообще работа электронной почты обеспечивается с помощью трех протоколов: POP3 или IMAP — для получения писем, SMTP — для отправки.
Передача письма по SMTP происходит с помощью TCP-соединения. Стандартный порт для незащищенного соединения — 25. Однако многие сервисы по умолчанию его блокируют, так как именно на него обычно идет рассылка вирусного спама.
В качестве альтернативных можно прописывать в настройках порты 587 и 2525.
Для защищенного соединения по SSL используется порт 465.
Как работает SMTP-сервер
Функции почтового сервера SMTP сводятся к следующему:
- определить домен получателя письма и то, совпадает ли он с доменом отправителя;
-
определить IP-адрес сервера SMTP получателя;
-
установить соединение с ним;
-
с помощью серии запросов-ответов передать адреса отправителя и получателя, а также само письмо вместе с заголовками.
Если провести аналогию с обычной почтой, то функции SMTP-сервера можно сравнить с работой почтового отделения, которое проверяет корректность данных получателя на вашем конверте и отправляет письмо по месту назначения. Само письмо почтовое отделение не вскрывает. Сервер SMTP также не проверяет заголовки и содержимое вашего письма, а отправляет его как есть.
Виды почтовых серверов
SMTP-сервер встречается в нескольких вариантах:
- Бесплатные серверы SMTP. Идут как дополнение к бесплатным почтовым сервисам, таким как Яндекс.Почта, Gmail, Mail.ru и другим. Предназначены в основном для личного использования и не подходят для корпоративных рассылок: есть ограничения на количество отправок, высокий риск попасть под спам-фильтры и т. д.
- Сервер, предоставляемый интернет-провайдером. Этот вариант SMTP чем-то похож на использование бесплатных почтовых серверов: у вас также будут ограничения на отправку писем и, возможно, на скорость обработки очереди отправки
- SMTP от хостинга. Обычно достаточно производительный и без ограничений на отправку. Но нужно учитывать, что при массовых рассылках и низком качестве списка получателей есть большой риск попасть под спам-фильтр, причем не только того адреса, с которого ведется рассылка, но и всего домена.
- Коммерческие серверы SMTP. Предлагаются многими сервисами рассылок. Лучшее решение, если вы рассылаете множество писем, причем как транзакционных, так и рекламных. Обеспечивают быструю и надежную доставку и снижают риск попадания ваших писем в папку «Спам» у получателей.
Ответы SMTP-сервера. Коды успешной или неуспешной обработки запроса
В процессе передачи данных по SMTP ваш сервер отправляет на почтовый сервер получателя запросы, а тот высылает ответы. Ответы содержат трехзначный код, в котором зашифрован результат обработки запроса, и поясняющий текст к нему. Коды ответов могут иметь вид:
- 2xx. Такой ответ означает, что предыдущая команда была успешно выполнена.
- 3xx. Коды, начинающиеся на тройку, высылаются на промежуточном этапе передачи, когда сервер ждет остальную часть данных.
- 4xx. Это коды ошибок, которые могут носить временный характер.
- 5xx. В эту категорию относятся коды критичных ошибок.
Коды ошибок SMTP, их причины и варианты исправления ситуации
Прежде всего учтите важный момент: хотя многие коды ответов стандартны, существуют и уникальные для каждого SMTP сервера коды. Их могут создавать администраторы почтовых серверов. Обычно к ним идет поясняющий текст, из него можно понять, в чем дело.
Мы же разберем самые распространенные ошибки SMTP и поясним, что делать в этих ситуациях.
Ошибка 421
Расшифровка ошибки SMTP 421 — «сервис недоступен». Причиной могут быть:
-
Блокировка трафика на 25 порту. Пропишите в настройках альтернативные порты.
-
Неправильно заданы настройки соединения. Проверьте и исправьте настройки.
-
Ваш антивирус или брандмауер блокирует соединение с сервером SMTP.
Попробуйте отключить программу защиты и отправить письмо. Если ошибка исчезла, значит дело в этом. Добавьте IP-адрес сервера в исключения антивируса или брандмауера.
- Использование VPN. Встречается достаточно редко, но все же проверьте, отправляется ли письмо, если отключить VPN. Если да, то необходимо обратиться к администраторам VPN-сервиса, чтобы устранить проблему.
-
Вы используете бесплатный сервер SMTP и при этом отправляете много писем. У таких серверов существуют лимиты на отправку в определенный промежуток времени, возможно, вы его превысили. Вам лучше использовать профессиональные платные решения.
-
Грейслистинг (серый список). Это функция защиты от спама. Работает она следующим образом: в ответ на все подозрительные письма, письма с адресов, с которых сообщение приходит впервые, сервер отправляет эту ошибку. Если на стороне отправителя — легитимный SMTP-сервер, а не спамерское ПО, то через некоторое время он отправит письмо еще раз, и уже тогда сервер получателя примет письмо. Спамеры обычно не предпринимают повторных попыток отправки. Предпринимать в этом случае обычно ничего не нужно — если вы пользуетесь надежным сервером, он сам повторит отправку и письмо будет доставлено.
Ошибка 451
Эта ошибка означает, что отправка была прервана в процессе. Возможные причины и пути решения проблемы следующие:
- На DNS-сервере неправильно прописаны параметры почтового сервера (MX записи). Например, некорректно проставлены предпочтения, если почтовых серверов для домена несколько. Перепроверьте и исправьте записи. Возможно, потребуется также посмотреть логи и файлы конфигурации.
- Превышены лимиты сервера на отправки или подключения. Проверьте, нет ли подозрительно большого количества отправляемых писем, если все нормально — увеличьте лимиты в настройках.
Ошибка 452
Означает, что либо у вас, либо у получателя закончилось место на машине, где установлен сервер, или не хватает памяти для обработки. Проверьте, есть ли в сообщении упоминание про «memory», и проверьте свою систему. Если у вас все в порядке, обратитесь к получателю.
Ошибка 550
Самый распространенный тип ошибки SMTP. В большинстве случаев возникает, если указан несуществующий email-адрес получателя. Но также возможны следующие причины:
- Не работает почтовый сервер на стороне адресата. Попробуйте отправить любое письмо на домен, за который отвечает другой почтовый сервер. Если письмо успешно отправлено — значит, проблема не у вас, нужно связаться с адресатом и объяснить ему ситуацию.
-
Неправильно настроены параметры SMTP — перепроверьте настройки.
-
Вы используете сервер провайдера, и у него установлены лимиты на отправку сообщений. Свяжитесь с провайдером, узнайте значения лимитов. При необходимости перейдите на другой тариф или используйте платный SMTP-сервер.
-
Возможно, в вашей сети вирус и с вашего адреса рассылается спам. Проверьте систему с помощью антивирусного ПО.
Ошибка 571
Это ошибка означает, что сервер SMTP получателя не принял ваше письмо. Возможные причины:
- Ваш IP-адрес заблокирован почтовым сервером адресата. Это может сделать антивирусное ПО, или файервол, или программное обеспечение для защиты от спама. Проблему нужно решать с системным администратором получателя.
-
Ваш email внесен в списки спамеров. Нужно разбираться в причине и предпринимать меры, чтобы его оттуда удалили.
-
У вашего IP нет rDNS записи. Это необходимый параметр, без него ни один почтовый сервер не примет ваше письмо. Для решения проблемы обратитесь к хостинг-провайдеру.
Истек сертификат почтового сервера
Просто обновите сертификат SMTP.