複数の受信者にメッセージを送信しようとしています。私はかなり標準的なことをやっている:SendFailedException:無効なアドレス - 例外に無効なアドレスがありません
Properties p = new Properties();
p.setProperty("mail.smtp.host", "my.smtp.host");
Session session = Session.getInstance(p);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(origin));
msg.setReplyTo(new InternetAddress[]{ new InternetAddress(replyTo) });
for(String address : destinations) {
msg.addRecipient(Message.RecipientType.BCC, new InternetAddress(address));
}
msg.setSubject("foo");
msg.setText("bar");
msg.setSentDate(new Date());
Transport.send(msg);
ほとんどの場合、それは動作しません。例外はSendFailedException: Invalid Addresses
です。私は例外の内容を印刷するとき、私はこれを取得:
-ivalid:[]
-valid unsent:[[email protected], [email protected], [email protected], ...]
-valid sent:null
基本的には1つ以上の無効なアドレスがあると言うと、それは無効なアドレスが存在しないと言います。無効なアドレス配列に少なくとも1つの電子メールアドレスを設定してはいけませんか?
UPDATE SendFailedException
次のメッセージで別の例外によって引き起こされる:
451 4.3.0 <SENDER_EMAIL_ADDRESS>:たぶん一時的なルックアップ失敗
メッセージで無効なアドレス受信者からではなく送信者からのものです。
メールサーバーは認証を必要としません。私が言ったように、それはほとんどの時間で動作します。それは常に外部のアドレスに電子メールを送ります(メッセージあたり約20人の受信者)。私は例外で間違った電子メールアドレスを見つけることを望んでいましたが、彼らはかなり普通です(@ gmailではなく@Gmailを除いて)。とにかく、無効なアドレス配列が空の場合、私はメッセージが "無効なアドレス"であってはならないと思います。エラー報告のバグかもしれないと思いますか? – Gustavo
何が本当に間違っているのかを知るには、おそらく[フルプロトコルトレース](https://javaee.github.io/javamail/FAQ#debug)を見る必要があります。 –
私はまだデバッグを有効にしませんでしたが、私は質問で更なる情報を更新しました。 – Gustavo