我有一些 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");
请帮助解决这个问题。