У нас есть большой список адресов электронной почты в нашей базе данных, откуда люди подписались на рассылку новостей на одном из наших сайтов.
У нас есть задание cron, которое использует PHP для захвата адреса электронной почты из базы данных и рассылки бюллетеней.
Когда электронное письмо возвращается, администратор cron job получает электронное письмо об этом.
Если бы мы хотели, чтобы скрипт автоматически удалял возвращенный адрес электронной почты из базы данных, что это лучший способ его выполнить? Есть ли способ зарегистрировать отсканированные электронные письма, а затем сценарий проанализировать журнал и удалить удаленные адреса электронной почты? Или есть способ проверить наличие адресов электронной почты с помощью PHP?
То, что вы хотите сделать, это выбрать «универсальный» адрес электронной почты отказов (скажем, bounce@example.com). Вы хотите настроить заголовок «Return-Path» на «bounce@example.com».
Затем у вас есть внешний процесс, чтобы проверить почту «bounce@example.com» для сообщений. Не используйте эту учетную запись электронной почты для чего-либо еще, кроме отскоков.
В этот почтовый ящик вы получите отсканированные сообщения, сообщения о поездках и другие типы писем. Вам просто нужно обучить парсер, чтобы найти определенные шаблоны в письме. Вначале ваш список шаблонов не будет исчерпывающим, но вам нужно вручную просматривать этот почтовый ящик время от времени, чтобы вы могли еще больше обучить ваш синтаксический анализатор.
Ваш парсер может быть простым и искать простые подстроки или даже регулярные выражения. В большинстве случаев регулярные выражения не нужны.
Что вам нужно – это парсер.
Вы можете получать отсканированные электронные письма через POP3 или IMAP или даже читать из файлов (если вы можете настроить свой собственный MTA). Сообщения об отказе будут доставлены на адрес электронной почты, указанный в заголовке «Return-Path».
Нет хорошего анализатора отказов с открытым исходным кодом для PHP, как я знал. Вы можете написать свой собственный. Вы можете начать с обнаружения парсера из mailman (написанного на python).