Можно создать дубликат:
Swiftmailer 4 does not retrieve bounces as $failedRecipientsSwiftMailer неудачи Gmail SMTP
Я использую SwiftMailer отправить электронную почту через мой счет GMail с помощью SMTP.
У меня есть все, что нужно, и я могу отправлять электронные письма без каких-либо проблем.
documentation говорит, что send()
должен возвращать 0
, если никаких сообщений не отправляются успешно и заполнить массив (я назвал его $failures
), с неудавшимся адресом электронной почты.
Проблема, которую я вижу в том, что если я отправить письмо на несуществующий адрес ([email protected]
), я получаю ответ от GMail:
Mail Delivery Subsystem [email protected]
9:06 PM (6 minutes ago)
to me
Delivery to the following recipient failed permanently:
[email protected]
Technical details of permanent failure:
DNS Error: Domain name not found
----- Original message -----
Однако SwiftMailer еще возвращает сообщение 1 (1 успешно отправлено), а массив $failures
остается пустым.
Поскольку соединение зашифровано с помощью SSL, я не думаю, что могу нюхать и смотреть на пакеты с помощью wirehark.
Моя догадка заключается в том, что SMTP-сервер GMail возвращает успех, в то время как он генерирует сообщение об ошибке и отправляет его на адрес отправки.
Это правильно? Если да, есть ли способы поймать неудачи в PHP?
Swiftmailer отправляет только электронное письмо. Сообщение об ошибке отправляется позже, Swiftmailer не проверяет их. – hakre
Просто подсказка: вы можете проверить, существует ли запись DNS MX для этого домена, прежде чем на самом деле пытаться отправить электронное письмо: http://www.php.net/manual/en/function.checkdnsrr.php – JuCachalot