1

PHP mail() と送信者アドレスを使用して、ニュースレターを送信しています。

私が確認しなければならないいくつかの理由により、これらのニュースセッターの多くはバウンスされ、私の送信者アドレスに「失敗通知」を返します。

現時点では、これらの電子メールは送信者の電子メールを読み取る電子メール クライアントに返されるだけです。

マーケティング スタッフのために、これらすべての「失敗した」電子メール アドレスを保存して管理できればいいのにと思います。もちろん、電子メール クライアントから各電子メール アドレスをコピー/貼り付けするのは非常に困難です (数百あります)。

これらのアドレスを PHP 経由で検出してキャッチし、Mysql テーブルに格納する方法はありますか?

前もって感謝します。

4

2 に答える 2

0

これに対する通常の解決策は、VERP http://cr.yp.to/proto/verp.txtです。基本的には、メッセージごとに一意のエンベロープ送信者を使用します。その特定のアドレスに送り返されたものはすべて、送信しようとしたアドレスからのバウンスです。

たとえば、リストが呼び出されfnord@example.org、メッセージ 12345 をdjb@example.net.invalid送信した場合、そのメッセージのエンベロープ送信者は次のようfnord-12345-djb=example.net.invalid@example.orgになり、このアドレスへの電子メールを正しい場所にルーティングするように MTA を構成する必要があります (失敗したアドレスを削除するスクリプト)。あなたのデータベースから、または何でも)。

もちろん、適切なメーリング リスト マネージャを使用している場合 (そうすべきです!)、これらすべてを処理するロジックが既に含まれています。それは構成の簡単な問題であるはずです。

于 2012-04-23T11:09:25.670 に答える
0

mail()このコマンドは、処理のためにメッセージをローカル メール サーバーにサンドするだけなので、失敗したメッセージに関する情報をコマンドから取得することはできません。

メールボックスをチェックする cronjob または定期的に呼び出されるスクリプトを実装する必要があります。そのため、PHP でIMAP 関数と POP 関数を使用して、メッセージをフェッチし、失敗したメッセージを処理する必要があります。

または、メールサーバーのマニュアルを調べて、サーバーに障害が発生したときに実行するコードを含めることができるかどうかを確認する必要があります。したがって、メールサーバー自体がデータベース内の失敗したメッセージにフラグを立てるか、少なくとも失敗したメッセージを提供するスクリプトを呼び出します。

于 2012-04-20T08:54:10.180 に答える