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

StackOverflow https://stackoverflow.com/questions/5847985

  •  27-10-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

В PHP, когда вы отправляете почту с помощью почты, вы должны проверить с условием

if (mail ($ to, $ subject, $ message, $ headers)) {// Успешная доставка почты} else {// code для un-successfull mailing}

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

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

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

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

Хотя это только половина битвы ... для того, чтобы фактически прочитать NDR, вам нужно входить в систему сценария в почтовый магазин, пробежать через сообщения, а затем анализ заголовков и/или тело сообщения NDR (Убедитесь, что вы обращаетесь к документам RFC, перечисленным на Wikipage), а затем примите меры на основе этого. Недавно я использовал Zend_mail_storage Чтобы справиться с этим. Если вам нужно это сделать, то вы, вероятно, также хотите просто пойти дальше и использовать Zend_mail для отправки, так как хранилище включено в компонент. Вам нужно будет взглянуть на RFC для кодов NDR и состояния, чтобы правильно проанализировать.

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

Другие советы

В PHP, когда вы отправляете почту с помощью почты, вы должны проверить с условием

if (mail ($ to, $ subject, $ message, $ headers)) {// Успешная доставка почты} else {// code для un-successfull mailing}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top