0

私はすでに Mimemessage オブジェクトを持っています。既存のコンテンツにいくつかのコンテンツを追加しようとしました。message.getContent() メソッドを使用すると、コンテンツ オブジェクトがあります。次に、msg.setContent(appendContent, contenttype) を使用して setContent を設定します。その後、私も msg.saveChanges() を呼び出しました。次に、同じ mimemessage オブジェクトから、msg.getRawInputstream() メソッドを使用して Rawinputstream を取得しようとしました。しかし、これは新しいコンテンツではなく古いコンテンツを返します。なんで?

MimeMessage msg = new MimeMessage(session,inputstream);
String contenttype = msg.getContentType(); // text/plain; charset=utf-8
String content = msg.getContent();  //oldContent
String newContent = content + "\n some new content";
msg.setContent(newContent,contenttype);
msg.saveChanges();
InputStream ins = msg.getRawInputStream(); // returns oldContent stream why???????????
4

1 に答える 1

0

JavaMail のどのバージョンを使用していますか?

JavaMail は、メール サーバーからのメッセージの読み取り、またはメール サーバーに送信する新しいメッセージの作成を処理するように設計されています。あなたがやろうとしているのは、既存のメッセージを「編集」することです。以前のリリースでは JavaMail のこの領域にバグがありましたが、現在のリリースでもこの領域にまだバグがある可能性があります。

この特定のケースでは、新しいコンテンツ用の「生の入力ストリーム」はまだありません。メッセージを書き出すまで、コンテンツは MIME (raw) 形式に変換されません。

getRawInputStream メソッドの主な目的は、データのフォーマットが正しくなく、JavaMail がデータを正しくデコードまたは解釈できない場合に、生データにアクセスできるようにすることです。この場合、なぜそれを使用するのですか?

于 2013-10-21T17:39:10.480 に答える