質問

私には、ニュースレターを購読している約 10,000 人のユーザーのデータベースがあります。サイトをASPからPHPに変更します。cronジョブでニュースレターを送信しています。配信失敗レポートの記録を追跡したい。どのようにしてそれが可能でしょうか?導いてください、ありがとう。

役に立ちましたか?

解決

PHPでメール関数を使用してメールを送信するときは、条件で確認する必要があります

if(mail($to, $subject, $message, $headers)){ // Successfull メール delivery } else { // コード メール送信の失敗 }

これは、OPが実際にやろうとしていることに対して非常に不正確です... マニュアルより:

重要なのは、 メールが受け入れられたため、 配達、それはメールを意味するものではありません 実際に意図したところに到達します 行き先。

サーバーのタイプと構成に応じて、さまざまな結果が得られます。適切で一貫性のあるインターフェイスを確保するには、SMTP を使用することをお勧めします。通常、これを行うにはライブラリを使用します...ソケットを使用して手動で行うこともできますが、なぜ車輪を再発明するのでしょうか?プロジェクトに応じて使用するライブラリが 3 つあります。

このレベルの対話には、SwiftMailer または Zend_Mail を使用します。これらは両方とも、メッセージの送信だけでなく SMTP からの情報の取得をサポートしているため、たとえば、失敗した受信者に関する情報を取得できます (SwitftMailer の例)。Zend と Swift はどちらもカス​​タム スプール キューもサポートしているため、アプリケーション対応の方法でキューイングとメッセージ送信をより深く統合できます。SwiftMailer にはバッチ送信機能もあります...これは Zend_Mail でも利用できると思いますが、詳しく調べたことはありません。

これはまだ戦いの半分に過ぎませんが...実際に NDR を読み取るには、メール ストアにログインし、メッセージをループしてスクリプトを実行する必要があります。 NDR のヘッダーおよび/またはメッセージ本文の解析 (ウィキページにリストされている RFC ドキュメントを必ず参照してください)、それに基づいてアクションを実行してください。最近私が使ったのは Zend_Mail_Storage これに対処するために。これを行う必要がある場合は、Storage がコンポーネントに含まれているため、送信にも Zend_Mail を使用することをお勧めします。適切に解析するには、NDR とステータス コードの RFC を参照する必要があります。

全体として、可能であれば、次のようなサードパーティのサービスを統合することをお勧めします。 メールチンパンジー または 常時接触. 。作業ははるかに少なくなり、時間をかけてこれに取り組む開発チームがいない限り、サービスはおそらく全体的により良い結果をもたらすでしょう。

他のヒント

PHPでメール関数を使用してメールを送信するときは、条件で確認する必要があります

if(mail($ to、$ subject、$ message、$ headers)){//成功したメール配信} else {// un-successfull mailingのコード}

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top