私はテスト アプリケーションを開発し、仕事用の PC ですべてを実行しています。会社のメール サーバーを使用してメールを送信しています。正常に動作します。私のPCからメールサーバーに到達できない場合などの状況をどのように処理するのか疑問に思っていました. 私がそれについて読んだ限り、レールアプリケーションはメールを送信するだけです。メールが受信者に届いたかどうか、受信者のメール ID が正しかったかどうかなどを知る方法はありません。このシナリオの処理方法について何か考えはありますか? よろしくお願いします、 アンジャリ
2 に答える
ここで 2 つの問題をごちゃまぜにしていると思いますが、これらは実際にはまったく関係がありません。
最初の問題 - 電子メールが企業のメール サーバー(この場合はメール リレー) によって受け入れられたことを確認します。これを解決するには、メッセージのローカル キューを作成し (データベース、キュー サーバーなどに保存します)、別のワーカー プロセスで送信します。これにより、各メッセージがキューからプルされ、配信され、削除されます。メールリレーによって受け入れられた場合のみ。
または、プロセスの低レベルの手動制御が必要ない場合は、マシンに単純なローカル メール サーバーをセットアップし、代わりにメールを企業のメール リレーに直接送信する場合は、ローカル メール サーバーに送信するだけです。次に、メールが企業に適切に配信されたことを確認します。
ただし、どちらの場合も、メール アドレスが有効かどうか、ユーザーのメールボックスがいっぱいではないかどうかなど、メッセージが最終受信者に配信された場所に関する情報は得られません。
2 番目の問題 - メール配信エラーの追跡。この問題を適切かつ完全に解決するには、リモート サーバーから返送されたすべてのメールをキャッチして分析する必要があります。これは、メールが送信された時点では多くのエラーが不明であり、後でメール バウンスの形で戻ってくるためです。 . これらのバウンスをキャッチして追跡すると、メールボックスがいっぱい、無効なメール、一時的な配信エラーなどのエラーをキャッチできます。
これは、メール リスト管理ソフトウェアで行われる方法です。たとえば、phpList はまったく同じ方法で動作します。
この問題について考えました。私が考えたのは、メッセージを「メールキュー」と呼ばれる別のモデルに保存し、企業のメールサーバーが利用可能な場合にのみ、そのメールキューからメッセージをプルして削除する Ruby スクリプトを実行することでした (これを行うコードは既にありますが、私は信じている)。もちろん、もっと良い方法があれば、それも歓迎します。