Назад | Перейти на главную страницу

Как надежно определить, не было ли письмо возвращено

Я отправляю еженедельный информационный бюллетень подписчикам моего информационного бюллетеня.

Я отправляю электронное письмо с адреса noreply@example.com, потому что не хочу, чтобы люди могли заваливать мой почтовый ящик ответами при получении информационного бюллетеня.

Данные о моих подписчиках аккуратно помещены в базу данных. Я работал над сценарием, который регистрируется на всплывающем сервере noreply@example.com, чтобы увидеть почту, которая отскочила (возврат к отправителю), чтобы я мог удалить адреса электронной почты в моей базе данных, которые больше не работают.

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

До сих пор единственный способ надежно определить, является ли электронное письмо возвращенным с помощью моего сценария, - это проверить, есть ли X-Failed-Recipients: в шапке и если Обратный путь: значение пусто. Должен быть способ лучше?

Скрипт работает хорошо, но не хватает около 30% других возвращенных писем, которые не содержат X-Failed-Recipients: и где Обратный путь: значение иногда не пустое.

Есть ли более надежные способы определить, является ли электронное письмо, полученное на noreply@example.com, возвращенным, чтобы я мог предпринять шаги для удаления неработающего электронного письма из моей базы данных подписчиков?

Я не могу просто удалить все адреса электронной почты из своей базы данных, когда есть ответное письмо на noreply@example.com, потому что люди отвечают на noreply@example.com, ошибочно полагая, что кто-то его прочитает.

Мне удалось определить статус возврата сообщения с помощью модуля Perl под названием Почта :: DeliveryStatus :: BounceParser

Этот модуль просматривает отклонения на этапе подключения (коды ответов smtp) внутри возвращенного сообщения. Когда код ответа smtp начинается с 5, это явный сбой. Коды smtp доступны здесь: https://www.greenend.org.uk/rjk/tech/smtpreplies.html