-1

私が取り組んでいるメーリング アプリケーションでは、受信者の電子メール アドレスの検証を処理するために SendFailedException をキャッチします。しかし、もう少し読んだ後、catch ブロックは非常に高価であることがわかりました。メッセージが送信される前に、アドレスが無効かどうかを判断する方法があるかどうか疑問に思いました. これは一種の最適化問題です。

4

1 に答える 1

2

「無効」をどのように定義するかによって異なります。電子メールバリデータを含む Apache ライブラリがありますが、これは "@" 記号をチェックし、@ 記号フィールドの前後が制限を超えていないことをチェックするだけです。アドレスが対象のメール サーバーに存在することを確認する簡単な方法はありません。

SMTP プロトコルは、長いチェーンになる可能性のある次のメール サーバーにメッセージを渡すことに依存します。送信者の観点からは、チェーン内の次のサーバーが「了解しました」と言うと、メールは「送信」されます。

エラーは数日後に報告される可能性があり、アドレスが無効であるとは限りません。たとえば、電子メールのメールボックスがいっぱいで、それ以上のメッセージを拒否する場合があります。このような応答を処理するには、長時間実行されるトランザクションを監視しているため、ステート マシンが必要です。

于 2014-05-26T09:05:22.827 に答える