私は同じ問題、正確な状況を抱えていました。デフォルトでは、私のメールサーバーは、返信されたすべてのメールを最初に送信されたのと同じアカウントに送信し、自動メッセージ「メール配信に失敗しました: 送信者にメッセージを返します」 .
返品された理由を本当に知りたくありません。非常に多くのメールトランザクションがあったため、悪いものを削除したいだけです. Doestn Exist、Unavailable などの特定のルールを確認する時間がありません ,,, 削除のフラグを立てて続行したいだけです。
多くの異なるサーバーと応答タイプを処理する必要があるため、メールのバウンスは非常に簡単です。スパム対策ソフトウェアまたはオペレーティング システムのシナリオごとに、バウンスされた電子メールと共に異なるエラー コードが送信される場合があります。
IMAP をセットアップする場合は、こちらの KIDMOSES の「 Handling Bounced Email - USING PHPMAILER-BMH AND AUTHSMTP」のこの修正済みデバッグ バージョンを読んでダウンロードすることをお勧めしますhttp://www.kidmoses.com/blog-article.php?bid=40独自のカスタム ヘッダーを送信し、bounce@domain.comに送信してから、指を交差させて、バウンス メールに書かれた送信済みヘッダーをスクリプトがキャッチするかどうかを確認します。試してみました、動作します。
しかし、私の問題を解決した私の迅速で簡単な修正に従いたい場合は、ここに秘密があります.
1 - KIDMOSES が別の場所に移動したい場合に備えて、KIDMOSES サイトまたは私のサイトからより良いバージョンをダウンロードしてください http://chasqui.market/downloads/KIDMOSES-phpmailer-bmh.zip
2 - 返されたメールのテキストを含む変数は $body であり、それ自体に不正な返信メールが含まれています (SO ITS AN MULTIDIMENSIONAL ARRAY )。(サーバーのメールやその他の DNS メールも含まれますが、BAD MAIL BOUNCED を探しています。
3 - あなたの OWN SERVICE はバウンスされた電子メールを送り返しているため、バウンスされた電子メールを送り返し、その形式と独自のヘッダーを変更する可能性は低いため、返されたバウンスされた電子メール配列の順序を安全に選択できます。私の場合、常に同じ形式のテンプレートでした。(システムやプロバイダーを変更しない限り)
4 - $bodyを調べて、すべての電子メール文字列変数を検索し、それらを抽出して、$matchesという 2 次元配列に配置します。
5 - print_r( array_values( $matches ));を使用して配列を出力することにより、配列の位置を選択します。
6 - これは、変更する必要があるコードです。class.phpmailer-bmh.phpファイルの500 行目あたり
// 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