За последние 24 часа нас посетил 17441 программист и 1709 роботов. Сейчас ищут 1799 программистов ...

Обработка bounce-писем

Тема в разделе "Работа с почтой", создана пользователем enshtein, 11 ноя 2015.

  1. enshtein

    enshtein Активный пользователь

    С нами с:
    27 авг 2006
    Сообщения:
    291
    Симпатии:
    0
    Есть база клиентов (более 10 000 адресов) по которым ведем еженедельную рассылку.
    В обратку на ящик приходят bounce-письма откаты: несуществующий ящик, несуществующий домен, антиспам-защита и т.д.
    Есть необходимость почистить базу адресов от не существующих и проблемных, а также знать какие письма и по каким адресам были не доставлены! Обрабатывать входящую почту после каждой рассылки в 10 тыс. писем в ручную - геморрой, нужна автоматизация!

    1) Пробовал найти что-нибудь готовое, нашел только скрипт PHPMailer-BMH (http://phpmailer.worxware.com/index.php?pg=bmh)
    Но в моём случае он для каждого Bounce-письма выдает строчку вида: Msg #1 is not a standard DSN message
    Проект был заброшен в январе 2009 года. Данный скрипт читает через IMAP письма на ящике и анализирует их содержимое по своим правилам:
    Код (PHP):
    1. /*
    2.    * <xxxxx@yourdomain.com>:
    3.    * 111.111.111.111 does not like recipient.
    4.    * Remote host said: 550 User unknown
    5.    */
    6.   elseif (preg_match ("/<(\S+@\S+\w)>.*\n?.*\n?.*user unknown/i",$body,$match)) {
    7.     $result['rule_cat']    = 'unknown';
    8.     $result['rule_no']     = '0236';
    9.     $result['email']       = $match[1];
    10.   }
    11.  
    12.   /*
    13.    * rule: mailbox unknown;
    14.    * sample:
    15.    * <xxxxx@yourdomain.com>:
    16.    * Sorry, no mailbox here by that name. vpopmail (#5.1.1)
    17.    */
    18.   elseif (preg_match ("/<(\S+@\S+\w)>.*\n?.*no mailbox/i",$body,$match)) {
    19.     $result['rule_cat']    = 'unknown';
    20.     $result['rule_no']     = '0157';
    21.     $result['email']       = $match[1];
    22.   } 
    Проблема в том, что в скрипте я не нашёл ни строчки кода, посвященной перекодировке сообщений, а это как мне кажется очень важный момент по которому правила обработки писем на поиск совпадений через preg_match не работают!

    2) Находил еще такую статью на хабре: http://habrahabr.ru/post/126448/. Однако хостинг не позволяет настраивать почтовик. Менять хостинг не собираемся в ближайшее время, потому вариант отпадает. И потом рассылка ведется с трех разных e-mail аккаунтов (адресов), по мимо рассылки по ним еще переписка в ручном режиме с клиентами осуществляется так что совсем не судьба.

    3) Остается вариант написать самому скрипт, который бы:
    после каждой рассылки через определенное время проверял бы почтовый ящик на предмет нахождения в нём bounce-писем
    анализировал бы содержимое этих писем, потому как не все обратные письма могут быть bounce-ответами
    и помечал бы адреса в базе как несуществующие, проблемные и т.д.

    Может быть кто-нибудь сталкивался с такими задачами? Или знает готовое решение, которое я не смог найти в Интернете?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    впс

    вообще, вам не нужено почтовик настраивать. Вам нужно через пхп показывать сообщения с любого ящика, а рядом просто рисовать кнопку, которая будет отмечать адрес дохлым. Делать это можно вручную, одну кнопку нажать легко и быстро. Когда база очистится, то отлупы не будут тыщами приходить и будет просто и удобно.
     
  3. enshtein

    enshtein Активный пользователь

    С нами с:
    27 авг 2006
    Сообщения:
    291
    Симпатии:
    0
    хм..., интересная идея, спасибо )))

    Добавлено спустя 1 минуту 36 секунд:
    вот только среди писем на ящик с которого идет рассылка могут быть простые письма переписки между нашими сотрудниками и клиентами.
    и хорошо бы мне как-то отфильтровать явные письма bounce-откаты от любых других писем...