2011-01-19 9 views
2

私は、受信者を入力していない理由が何であれ、決められたアドレスと件名を持つメールに返信する簡単なルーチンを作成しようとしています。JavaMail Message.reply(ブール値)が受信者に入力されない

次の例では、repは常にnullです。Transport.sendを呼び出すと、受信者がないという例外が発生します。

MimeMessage reply = (MimeMessage) message.reply(false); 
Address[] rep = reply.getRecipients(Message.RecipientType.TO); 
if (rep == null || rep.length == 0) { 
    System.out.println("Reply aborted due to no recipient."); 
} else { 
    reply.setFrom(from); 
    reply.setText(body); 
    Transport.send(reply); 
} 

私はOracle jGuru pagesで実証し、すべての様々な味で場所にコピーされるパターンを適用しています。 replyのドキュメントから

答えて

2

replyToAllがtrueの場合、新しいメッセージは、このメッセージのすべての受信者に対処されることになります。それ以外の場合、返信は(getReplyToメソッドの値を使用して)このメッセージの送信者にのみ送信されます。

論理的な次のステップは、message.getReplyTo()が返すものをチェックすることです。それがnullを返す場合、それは問題を説明します...

+0

ありがとうジョン、私は謝罪する必要があります。私は今、この動作のテストを追加しましたが、実際にJavaDocを最初に読んだときに誤って解釈しましたが、 "getReplyTo"がnullで、 "replyToAll"を引き継ぐと "getFrom() BccとCcのアドレスだけが受信者として追加されています(ほとんどのEメールクライアントではreply-to-all関数に似ています)。 –

関連する問題