PHPMailer не ловит ошибки SMTP - PullRequest
0 голосов
/ 28 июня 2019

Я использую PHPMailer для подключения к удаленному серверу SMTP под управлением Exim. В моих журналах exim я вижу, что отправка не удалась, но PHPMailer не улавливает исключение, и кажется, что SMTP-сервер возвращает статус «ОК».

Вот выдержка из моего журнала exim:

2019-06-27 17:03:00 1hgbXj-0000O5-Vl == *******@gmail.com R=dnslookup T=remote_smtp defer (-44) H=alt4.gmail-smtp-in.l.google.com [108.177.119.27]: SMTP error from remote mail server after RCPT TO:<********@gmail.com>: 452-4.2.2 The email account that you tried to reach is over quota. Please direct\n452-4.2.2 the recipient to\n452 4.2.2  https://support.google.com/mail/?p=OverQuotaTemp **** - gsmtp

А вот (конец) вывода отладки PHPMailer:

SERVER -> CLIENT: 250 OK id=1hgbf8-0008CL-15
CLIENT -> SERVER: RSET
SERVER -> CLIENT: 250 Reset OK
Done @0.0734977722168s
CLIENT -> SERVER: QUIT

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

1 Ответ

0 голосов
/ 28 июня 2019

Это не имеет ничего общего с PHPMailer. Отладочный вывод PHPMailer показывает успешную доставку на ваш сервер exim. На этом его участие заканчивается - PHPMailer ни при каких условиях не общается с gmail и поэтому никогда не видит этот ответ.

Затем exim (как и предполагалось) пытается доставить сообщение, но получает уведомление об ошибке от gmail. Затем вы должны увидеть в своих журналах попытку exim отослать сообщение на обратный путь, который устанавливается вашим почтовым сервером от отправителя конверта SMTP, используемого для отправки исходного сообщения. Вы можете управлять этим адресом, установив свойство Sender в PHPMailer, хотя по умолчанию это ваш исходный адрес, который вам обычно нужен.

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

Обработка отказов не очень приятная вещь для записи, но вы можете обнаружить, что использование VERP-адресации помогает.

...