У меня была такая же проблема, точная ситуация. По умолчанию мой почтовый сервер отправляет все мои возвращенные письма на ту же учетную запись, с которой он был первоначально отправлен, с автоматическим сообщением msg «Ошибка доставки почты: возвращение сообщения отправителю» .
Я действительно не хочу знать, почему он был возвращен, так много почтовых транзакций, что я просто хочу удалить плохие. У вас нет времени, чтобы проверить определенные правила, такие как Doestn Exist, Unavailable и т. Д., Просто хотите пометить удаление и продолжить.
Отсканированные письма настолько тривиальны, что вам нужно иметь дело со множеством разных серверов и типов ответов. Каждое антиспамовое программное обеспечение или сценарий операционной системы может отправлять свой код ошибки в ответном письме.
Я рекомендую вам прочитать и скачать эту исправленную отладочную версию Обработка отклоненной электронной почты - ИСПОЛЬЗОВАНИЕ PHPMAILER-BMH И AUTHSMTP из KIDMOSES здесь http://www.kidmoses.com/blog-article.php?bid=40, если вы хотите настроить IMAP и отправить свое собственные пользовательские заголовки, отправьте их на свой bounce@domain.com и затем скрестите пальцы, чтобы увидеть, будет ли скрипт перехватывать отправленные вами заголовки, написанные в отскоченном письме. Я попробовал, работает.
Но если вы хотите следовать моему быстрому и простому решению, которое решило мою проблему, вот секрет.
1 - Загрузите лучшую версию с сайта KIDMOSES или с моего сайта, на случай, если KIDMOSES захотят переехать куда-нибудь еще http://chasqui.market/downloads/KIDMOSES-phpmailer-bmh.zip
2 - Переменная, содержащая текст вашего возвращенного письма, равна $ body и сама содержит неверно возвращенное электронное письмо (ТАК ЕГО МНОГОМЕРНАЯ Массив). (Также содержит почту вашего сервера и прочую почту DNS, но мы ищем ПЛОХУЮ ПОЧТУ.
3 - Поскольку ваша СОБСТВЕННАЯ СЛУЖБА отправляет вам обратно отклоненную электронную почту, маловероятно, что она изменит свой формат и собственные заголовки, отправив обратно отклоненные электронные письма, поэтому вы можете выбрать порядок возврата возвращенного массива отклоненной электронной почты. В моем случае всегда был одинаковый формат шаблона. (Если вы не меняете системы или провайдеров)
4 - Мы смотрим в это $ body , ищем все строковые переменные электронной почты и извлекаем их, помещая их в двумерный массив , называемый $ match
5 - Мы выбираем позицию массива, печатая массив, используя print_r (array_values ($ match));
6 - это код, который вам нужно изменить. Вокруг строки 500 из class.phpmailer-bmh.php file
// process bounces by rules
$result = bmhDSNRules($dsn_msg,$dsn_report,$this->debug_dsn_rule);
} elseif ($type == 'BODY') {
$structure = imap_fetchstructure($this->_mailbox_link,$pos);
switch ($structure->type) {
case 0: // Content-type = text
$body = imap_fetchbody($this->_mailbox_link,$pos,"1");
$result = bmhBodyRules($body,$structure,$this->debug_body_rule);
//MY RULE IT WORKS at least on my return mail system..
$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $body, $matches);
//print_r( array_values( $matches )); //To select array number of bad returned mail desired, usually is 1st array $matches[0][0]
echo "<font color = red>".$matches[0][0]."</font><br>";
break;
Итак, мы забываем о возвращенных заголовках и концентрируемся на плохих письмах. Вы можете превзойти их, вы можете MySQL их, или обрабатывать все, что вы хотите сделать.
ВАЖНО
Прокомментируйте эхо в callback_echo.php в каталоге примеров, иначе вы получите весь мусор перед печатью.
function callbackAction ($msgnum, $bounce_type, $email, $subject, $xheader, $cheader, $remove, $rule_no=false, $rule_cat=false, $rule_msg='', $totalFetched=0) {
$displayData = prepData($email, $bounce_type, $remove);
$bounce_type = $displayData['bounce_type'];
$emailName = $displayData['emailName'];
$emailAddy = $displayData['emailAddy'];
$remove = $displayData['remove'];
//echo "<br>".$msgnum . ': ' . $rule_no . ' | ' . $rule_cat . ' | ' . $bounce_type . ' | ' . $remove . ' | ' . $email . ' | ' . $subject . ' | ';
//echo 'Custom Header: ' . $cheader . " | ";
//echo 'Bounce Message: ' . $rule_msg . " | ";
return true;
}
МОЙ ВЫХОД
Connected to: mail.chasqui.market (bounce@chasqui.market)
Total: 271 messages
Running in disable_delete mode, not deleting messages from mailbox
kty2001us@starmedia.com
...
entv@nuevoface.com
Closing mailbox, and purging messages
Read: 271 messages
0 action taken
271 no action taken
0 messages deleted
0 messages moved