Вопрос о неудачных отчетах о доставке при отправке объемных электронных писем
-
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}