1

我有一些 Java 代码会发送一封电子邮件,其中的代码类似于以下内容: 实际上,我从 Httprequest 参数中获得了 Mimemessage,并且在那个 mimemessage 中,我将向现有正文附加一些内容。

如果 Mimemessage 是 Multipart content-type ,我在发送消息时不会遇到任何问题。

如果消息是 text/plain 和 text/html 内容类型,则我设置的内容传输编码不适用于正文。

基于此文档

问:虽然 JavaMail 为我完成了所有的编码和解码,但我需要手动控制一些正文部分的编码。答:在极少数需要控制编码的情况下,有几种方法可以覆盖 JavaMail 的默认行为。一个简单的方法如下。创建整个消息后,调用 msg.saveChanges() 然后使用类似 mbp.setHeader("Content-Transfer-Encoding", "base64") 的东西来强制对给定的正文部分进行 base64 编码。

另一种方法是继承 MimeBodyPart 并覆盖 updateHeaders 方法,以便它首先调用 super.updateHeaders() ,然后如上所述设置 Content-Transfer-Encoding 标头。

也适用于上面。但这对我不起作用。

InputStream ins = request.getInputStream();
MimeMessage msg = new MimeMessage(session,ins);
msg.setContent("some non-Ascii content","text/plain; charset="UTF-8"");
//Tried setheader before saveChanges() method, also doesn't work for me
//msg.setHeader("Content-Transfer-Encoding","base64"); 
msg.saveChanges();
//Now tried based on above docs after saveChanges method, also doesn't work
msg.setHeader("Content-Transfer-Encoding","base64"); 

请帮助解决这个问题。

4

1 回答 1

0

你在另一篇文章中复制了大部分这个问题,我在那里回答了一部分。

您最好在 http 请求中发送邮件消息的内容,然后根据该内容在服务器上创建一条新消息,而不是尝试将完整的 MIME 消息发送到您随后编辑的服务器。

于 2013-10-21T17:45:07.613 回答