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(原始)格式。

getRawInputStream 方法的主要目的是在数据格式不正确且JavaMail 无法正确解码或解释它的情况下允许访问原始数据。为什么在这种情况下使用它?

于 2013-10-21T17:39:10.480 回答