Сайт часто рассылает письма, но не всем пользователям письма доходят. Чтобы не отправлять письма, тем чья почта уже не существует, пишу обработку не доставленной почты.
Отправка посредством SMTP, проверка выделенного ящика с вернувшейся почтой по IMAP.
Большинство серверов в заголовок письма вставляет поле X-Failed-Recipients: ххххх@yandex.ru, но php функциями imap_headerinfo и ей подобными получить это поле не получается.
Тело письма тоже имеет разный формат, поэтому вынуть EMail и код ошибки не всегда получается.
Может кто решал подобное на PHP? Все найденные решения либо на Perl, либо модули почтовиков на С.
PS Чаще всего возвращается письмо формата
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
*****@balrt.ru
SMTP error from remote mail server after RCPT TO:<******@balrt.ru>:
host ns7.balrt.ru [88.147.158.86]: 550 5.1.1 User unknown
Но текст отличается и не получается написать регулярное выражение, чтобы вынуть нужную информацию.