Вопрос о неудачных отчетах о доставке при отправке массовых писем

У меня есть база данных примерно из 10 тысяч пользователей, которые подписались на рассылку. Я меняю свой сайт с ASP на PHP. Я отправляю новостные рассылки cron. Я хочу отследить запись неудачного отчета о доставке. Как это возможно? Пожалуйста, ведите меня, спасибо.

2 ответа

Решение

В php при отправке почты с функцией mail вы должны проверить с условием

if(mail($to, $subject, $message, $headers)){ // Успешная доставка почты} else { // Код для неуспешной рассылки}

Это очень неточно для того, что ОП на самом деле пытается сделать... Из руководства:

Важно отметить, что то, что почта была принята для доставки, НЕ означает, что почта действительно достигнет назначенного пункта назначения.

В зависимости от типа сервера и конфигурации вы получите разные результаты. Лучше использовать SMTP для обеспечения правильного и согласованного интерфейса. Обычно я бы использовал библиотеку, чтобы сделать это... вы могли бы сделать это вручную, используя сокеты, но зачем изобретать велосипед? В зависимости от проекта я использую 3 библиотеки...

Для этого уровня взаимодействия я бы использовал SwiftMailer или Zend_Mail. Оба из них поддерживают получение информации из SMTP, а также отправку сообщения, поэтому, например, вы можете получить информацию о неудачных получателях ( пример SwitftMailer). Как Zend, так и Swift также поддерживают пользовательские очереди катушек, чтобы вы могли более глубоко интегрировать очереди и отправку сообщений с учетом требований приложений. SwiftMailer также имеет функцию batchSend... я предполагаю, что это доступно и в Zend_Mail, но я никогда не копался в этом.

Хотя это только полдела... Для того, чтобы действительно прочитать отчеты о недоставке, вам необходимо выполнить сценарий входа в почтовое хранилище, циклически проходя через сообщения, а затем анализируя заголовки и / или тело сообщения отчета о недоставке (убедитесь, что Вы ссылаетесь на документы RFC, перечисленные в википее), а затем принимаете меры на основе этого. Недавно я использовал Zend_Mail_Storage, чтобы справиться с этим. Если вам нужно сделать это, то вы, вероятно, также захотите просто использовать Zend_Mail для отправки, так как Storage включен в компонент. Вам нужно взглянуть на RFC для получения отчетов о недоставке и кодов состояния, чтобы правильно проанализировать.

В целом, если это вообще возможно, я рекомендую просто интегрировать сторонние сервисы, такие как MailChimp или Constant Contact. Это намного меньше работы, и если у вас не будет команды разработчиков, работающих над этим, сервис, вероятно, даст лучшие результаты по всем направлениям.

В php при отправке почты с функцией mail вы должны проверить с условием

if(mail($to, $subject, $message, $headers)){ // Успешная доставка почты} else { // Код для неуспешной рассылки}

Другие вопросы по тегам