我有一些Java代码发送一封电子邮件,其代码有点如下:实际上我从Httprequest param获得了Mimemessage,并且在mimemessage中我将向现有主体添加一些内容。
如果Mimemessage属于Multipart内容类型,我在发送消息时不会遇到任何问题。
如果邮件是text / plain和text / html content-type,我设置的内容传输编码没有应用于正文。
基于此docs
问:尽管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");
请帮助解决这个问题。
答案 0 :(得分:0)
你在other post中复制了大部分问题,我在那里回答了部分内容。
您可能最好在http请求中发送邮件的内容,然后根据该内容在服务器上创建新邮件,而不是尝试将完整的MIME邮件发送到您随后编辑的服务器