1. ホーム
  2. java

[解決済み] アドレス無効例外の解決方法

2022-02-16 13:31:01

質問

を使用してメールを送信しようとしました。 javax.mail . メール送信中に以下のような例外が発生しました。

    **sendMail - Message Sending Failed: Invalid Addresses;
    nested exception is: 
javax.mail.SendFailedException: 550 #5.1.0 Address rejected.2013-02-28 13:17:08,236** 

何が問題なのでしょうか?

解決方法は?

受信サーバーがメールアドレスのメールボックス('@'の前の部分)を認識していないことを意味します。スペルミスや存在しない名前である可能性もありますし、受信サーバーがコード550で返信することでメッセージ(例:スパム)を拒否するように設定されている可能性もあります。

SMTP応答コードを要約し、様々な関連RFCへのリンクを提供する多くのページのうちの1つを紹介します。 http://www.greenend.org.uk/rjk/tech/smtpreplies.html .

EDIT: あなたの質問に答えるために、コメントの許容範囲よりももう少しスペースが必要です。

RaghuKing、Javadoc を見てみると javax.mail.SendFailedException このような例外オブジェクトに対して、3 つのメソッドを呼び出すことができることに気がつくでしょう ( catch ブロック)を作成します。

  • getInvalidAddresses() を使用して、無効であるため送信されないアドレスの配列を取得します。
  • getValidSentAddresses() で、このメッセージの送信に成功したアドレスの配列を取得します。
  • getValidUnsentAddresses() を使用して、有効だがメッセージが送信されなかったアドレスの配列を取得します。

(もちろん、複数の受信者にメッセージを送る場合、成功するものもあれば失敗するものもありますが、成功の数に関係なく、少なくとも1つの失敗があれば例外がスローされます。また、送信先がひとつだけであれば、そのアドレスはこれらの配列のうちのひとつだけであり、おそらくは ValidSent のリストを作成します。

これらの配列は、アドレスが含まれる配列の種類によって、例外をどのように処理するかの詳細情報を提供します。これは明らかにアプリケーションに依存しますが、これらは妥当な提案かもしれません。

  • 無効なアドレス : リストの無効なアドレスごとに、アドレスが間違っていたためメッセージが送信されなかったことをユーザーに伝え、アドレスを修正する方法を提供し、正しいアドレスへの再送信を試みます(ユーザーが別のアドレスを提供しない場合はキャンセルされます)。
  • 有効な送信先アドレス : 再送信しないでください。
  • 有効な未送信アドレス : これらのアドレスに再送信を試みてください。以前のアドレスが間違っていたため、これらのアドレスに届く前に送信を停止した可能性があります。

しかし、最終的には常識的な判断で、理解できない機能は理解できるまで少し試してみることです。