Вопрос о неудачных отчетах о доставке при отправке массовых писем - PullRequest
1 голос
/ 01 мая 2011

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

Ответы [ 2 ]

1 голос
/ 02 мая 2011

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

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

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

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

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

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

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

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

1 голос
/ 02 мая 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...