3

ZendMailを使用してニュースレターを送信しています。以前はsetReturnPath()、未配信のすべてのメール通知を1か所にまとめていました。

そして今何?

  • 到達不能だったアドレスのリストを取得するにはどうすればよいですか?
  • 返された通知を読み取って解析するにはどうすればよいですか?
  • メールが存在しないために返送されたのか、割り当てを超えただけなのかを知るにはどうすればよいですか?
  • どのヘッダーを送信して確認する必要がありますか?

関連している:

4

3 に答える 3

1

このクラスは役に立つかもしれません。メールがバウンスかどうかを判断し、説明付きの応答コードを返すことができます。

于 2011-08-30T20:00:51.233 に答える
1

簡潔な答え:

アプリではなく、簡単な方法でそれを行うことはできません。

長い答え:

これは、php アプリの外部で (少なくとも部分的には) 非同期で処理する必要があります。まず、リターンアドレスをTimB answersender+recipient=recipientdomain.com@senderdomain.comのように設定する必要があります。この時点で、受信 SMTP サーバーによって送信されたすべての通知がそのアドレスに送信されます。

senderdomain.com 次に、メール交換機で smtp デーモンをセットアップして、そのようなバウンス メッセージを処理し、何らかのパイプで処理する必要があります。

パイプを使用すると、返されたメッセージを外部プログラムに転送して、メッセージを解析し、必要な情報 (つまり、配信が失敗した理由) を抽出できます。

プログラム (アプリケーションの cli スクリプトである場合もあります) のその時点で、アドレスを失敗としてマークし、オプションでその理由を記録できます。

これは、単純なアプリケーションでは処理できない、かなり難しいタスクです。通常、私はsympaのような大規模なメーリング リストを処理する専用のソフトウェアを使用して、このタスクを処理してくれます。

それ以外の場合は、 Sendgridなどの外部配信サービスを使用して、単純な API で失敗したアドレスを報告することができます。このソリューションのボーナスとして、それらはすべての主要なプロバイダーのホワイトリストに含まれているため、いくつかの簡単なルール (バウンス アドレスを削除し、オプトイン ポリシーを使用するなど) を尊重する限り、メールはスパムとしてマークされません。ニュースレター)

于 2011-08-19T01:08:09.657 に答える
0

さて、2番目のリンクと特にTimBによる回答は、手順を非常によく説明しています。

明確ではないかもしれませんが、リターンパスは通常の電子メールアカウントに他なりません。つまり、そのアドレスに電子メールを送信します。Zend_Mailは応答を待機していないため、アドレスのリストはありません。

于 2011-08-19T00:15:41.400 に答える