PHP - массовая рассылка и проверка ответов сервера - PullRequest
2 голосов
/ 05 июля 2011

Мы отправляем много писем большому количеству наших пользователей (в диапазоне от 20 тыс. + В день).Одной из основных проблем, с которыми мы сталкиваемся, являются недействительные или мертвые электронные письма - иногда наши пользователи удаляют свои учетные записи, меняют свой адрес электронной почты без обновления своего профиля, или наши разработчики баз данных электронной почты просто перехватывали электронные письма, которые являются недействительными или более неактивными.Эти неразрешенные возвращенные сообщения о состоянии не только накапливаются в нашей учетной записи веб-мастера, но и тратят драгоценные ресурсы сервера и чаще отмечают нас как спам из-за повторных попыток.

Теперь, когда наш почтовый сервер настроен напродолжайте пытаться отправить электронное письмо на адрес, который возвращает «временно недоступно», я хотел бы иметь возможность получать сообщения о состоянии в PHP сразу после отправки.Например, когда мой класс Sender отправляет электронное письмо, я хотел бы знать, какое сообщение о статусе было возвращено - не является ли электронная почта больше неактивной, или сервер не существует, или электронная почта была просто перемещена на другой адрес.

Естественно, я хочу иметь возможность получать сообщения о состоянии отложенного электронного письма.Поэтому, если электронное письмо не отправляется из-за того, что адрес электронной почты получателя временно недоступен, я хотел бы вернуть сообщение «временно недоступно» обратно в Php, но я также хотел бы, чтобы реальное сообщение было возвращено после успешной отправки (дляНапример, если письмо отправляется через 2 дня).

Существует ли библиотека, которая поможет мне в этом?Каковы наиболее распространенные подходы к этой проблеме, если таковые имеются?

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Как и большинство вопросов о PHP и почте, в основном это MTA.

Массовая рассылка электронной почты - это наука сама по себе (хорошо, так что больше похоже на черное искусство), и при таких объемах вам нужно сильно улучшать свою игру, если вы хотите разумные скорости доставки.

Но вернемся к вопросу.

Очень много о том, как вы настраиваете свой почтовый сервер. AFAIK, большинство MTA отправят сообщение об ошибке только тогда, когда сообщение удалено из очереди (например, после последней попытки доставки). Что дает 2 варианта отслеживания каждой попытки:

1) анализ файлов журнала

2) установить количество попыток равным 1 (и, при необходимости, самостоятельно обрабатывать добавление в очередь).

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

Не зная, на какой ОС это работает, и на каком MTA невозможно дать более конкретные рекомендации.

1 голос
/ 05 июля 2011

Ответ Symcbean дает много теоретических данных и несколько средств для обработки вашего случая.

Кроме того, возможно, вы могли бы взглянуть на то, как работают другие библиотеки или встроенные функции.Например, вы можете взглянуть на:

Я использовал PHPList несколько раз назад, но это было уже надежное решение.Я не знаю класс PHP Mailer, но, возможно, стоит попробовать (или хотя бы посмотреть, как они справляются с подобными проблемами).

С уважением,

Макс

...