Обработка недоставленных писем с помощью Zend Mail - PullRequest
3 голосов
/ 18 августа 2011

Я отправляю новостную рассылку, используя Zend Mail.Я использовал setReturnPath(), чтобы поместить все недоставленные почтовые уведомления в одном месте.

И что теперь?

  • Как получить список адресов, которые были недоступны?
  • Как прочитать и проанализировать возвращенные уведомления?
  • Как узнать, была ли возвращена почта из-за несуществующей электронной почты или превышена квота?
  • Какие заголовки мне нужныотправить и проверить?

Похожие:

Ответы [ 3 ]

1 голос
/ 19 августа 2011

Краткий ответ:

Вы не можете сделать это простым способом, а не в своем приложении.

Длинный ответ:

Вы должны обрабатывать это асинхронно и вне вашего php-приложения (по крайней мере, частично). Прежде всего вы должны настроить адрес возврата примерно на sender+recipient=recipientdomain.com@senderdomain.com, как в TimB answer . В этот момент все уведомления, отправленные получающим сервером smtp, будут отправляться на этот адрес.

Затем вам нужно настроить демон smtp на senderdomain.com почтовый обменник для обработки такого рода рикошетов и обработки их в каком-то канале.

С помощью канала вы можете переслать возвращенное сообщение во внешнюю программу, которая анализирует сообщение и извлекает необходимую информацию (т. Е. Причину сбоя доставки)

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

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

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

1 голос
/ 31 августа 2011

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

0 голосов
/ 19 августа 2011

Ну, вторая ссылка и особенно ответ TimB очень хорошо объясняют процедуру.

Что может быть неясно, так это то, что обратный путь - это не что иное, как обычная учетная запись электронной почты, т.е. вы получите письмо на этот адрес. Zend_Mail не ждет ответа и, следовательно, нет списка адресов.

...