簡潔な答え:
アプリではなく、簡単な方法でそれを行うことはできません。
長い答え:
これは、php アプリの外部で (少なくとも部分的には) 非同期で処理する必要があります。まず、リターンアドレスをTimB answersender+recipient=recipientdomain.com@senderdomain.com
のように設定する必要があります。この時点で、受信 SMTP サーバーによって送信されたすべての通知がそのアドレスに送信されます。
senderdomain.com
次に、メール交換機で smtp デーモンをセットアップして、そのようなバウンス メッセージを処理し、何らかのパイプで処理する必要があります。
パイプを使用すると、返されたメッセージを外部プログラムに転送して、メッセージを解析し、必要な情報 (つまり、配信が失敗した理由) を抽出できます。
プログラム (アプリケーションの cli スクリプトである場合もあります) のその時点で、アドレスを失敗としてマークし、オプションでその理由を記録できます。
これは、単純なアプリケーションでは処理できない、かなり難しいタスクです。通常、私はsympaのような大規模なメーリング リストを処理する専用のソフトウェアを使用して、このタスクを処理してくれます。
それ以外の場合は、 Sendgridなどの外部配信サービスを使用して、単純な API で失敗したアドレスを報告することができます。このソリューションのボーナスとして、それらはすべての主要なプロバイダーのホワイトリストに含まれているため、いくつかの簡単なルール (バウンス アドレスを削除し、オプトイン ポリシーを使用するなど) を尊重する限り、メールはスパムとしてマークされません。ニュースレター)