2011-07-05 7 views
2

私たちは多くのユーザに1日に20k +の範囲で多くのメールを送信します。私たちが直面する重大な問題の1つは無効であるか死んでいる電子メールです。ユーザーが自分のアカウントを削除したり、プロファイルを更新せずに電子メールアドレスを変更したり、電子メールデータベースのビルダーが単に無効であるか、これらの未解決のステータスメッセージは、Webマスターアカウントに蓄積されるだけでなく、貴重なサーバーリソースを浪費し、繰り返し試みるために私たちにスパムとして頻繁に報告します。PHP - バルクメーリングとサーバレスポンスのチェック

私たちのメールサーバーは、「一時的に利用できません」を返すアドレスに電子メールを送信しようとしていますが、送信直後にステータスメッセージをPHPに受信したいと考えています。たとえば、私のSenderクラスが電子メールを送信したとき、電子メールがアクティブでなくなった、またはサーバーが存在しない、電子メールが単に別のアドレスに移動したかどうかなど、返されたステータスメッセージを知りたいと思います。

もちろん、遅延メールのステータスメッセージも受信できるようにしたいと考えています。したがって、受信者の電子メールアドレスが一時的に利用できないために電子メールが送信されない場合は、「一時的に利用できません」というメッセージをPHPに戻したいと思いますが、送信が成功すると、たとえば、メールが2日後に送信された場合)。

これを達成するのに役立つライブラリがありますか?もしあれば、この問題に対する最も一般的なアプローチは何ですか?

答えて

2

PHPとメールに関するよくある質問と同様、主にMTAに関するものです。

バルクの電子メールは、それ自体が科学であり(OK、これは黒い芸術のようなものです)、これらの種類のボリュームでは、合理的な配信率が必要な場合は、ゲームを大きくする必要があります。

しかし、質問に戻る。

これはメールサーバーの設定方法です。 AFAIKでは、大部分のMTAは、メッセージがキューから削除されたとき(たとえば、最後の配信試行後など)にのみ失敗メッセージを返送します。各試行を追跡するための2つのオプション与える:

1)解析のログファイル )1への試行回数を設定する(必要に応じて)自分を再キューイング処理します。

メッセージがサーバーから正常に送信された後に配信されない場合、メッセージの進行状況を追跡するために配信ステータス通知(バウンス電子メール)を使用することは非常に意味があるため、オプション2を使用するとさまざまなシナリオを処理するための異なるコードを作成する必要があります。

これがどのOSで実行されているのか、どのMTAであるのかわからないと、より具体的な推奨事項を提示することは不可能です。

+0

私たちは、MTAの上の柔軟性があり、1つは私たちのニーズに合わせてパフォーマンスが向上するかどうそれを交換する気にしないだろう。 OSはLinuxです。現在、sendmailを使用する場合もあれば、Zend_Mail_Transport_Smtpを使用する場合もあります。 – Swader

+0

私は自分の会社に送るライブラリを作成しました。実際の送信( - > send()コマンド)は1000秒間に30秒かかりますが、1000秒の差出人から1000人の異なる受信者に1000種類のメールを2秒以内で処理(解析および作成)できます。 。今、私たちはサーバへのラッチとその方法のために、ダイレクトZendトランスポートを使います。ある意味では、実際のMTAは使用しません。前述のように、サーバーはLinuxベースです。あなたの提案については、おそらく解決策2の例がありますか? – Swader

1

symcbeanの答えは、多くの理論的入力とあなたのケースを扱ういくつかの手段を提供します。

さらに、ほかのlibsや組み込み関数の仕組みを見てみることもできます。たとえば、あなたが見て持つことができます。

私はいくつかの時間前にPHPListを使用しますが、すでに信頼性の高いソリューションでした。 PHP Mailerクラスは分かりませんが、私は試してみる価値があるかもしれません。

よろしく、

マックス

+0

私はこれらのどちらも後にある機能を持っていないと思います。これらは「送信者」ライブラリですが、返信メッセージ/ステータスを解析できないようです。その部分は手作業で行う必要があり、私の会社のためにかなり良い送信者ライブラリを構築しているので( "ハンドラ"部分だけが必要です)、私はこれらの2つを必要としません。しかし、ありがとう! – Swader

関連する問題