我有一些Java代码会发送一封电子邮件,其代码如下:
MimeBodyPart part = new MimeBodyPart();
part.setContent(htmlString, "text/html; charset=\"UTF-8\"");
part.setHeader("MIME-Version", "1.0");
part.setHeader("Content-Type", "text/html; charset=\"UTF-8\"");
part.setHeader("Importance", severityVal);
mimeMultiPart.addBodyPart(htmlPart);
mimeMessage.setContent(mimeMultiPart);
......等等。
如何在base64中为此外发电子邮件编码“part”MimeBodyPart?
答案 0 :(得分:7)
来自docs:
问:尽管JavaMail为我做了所有编码和解码,但我需要手动控制某些身体部位的编码。 答:在极少数情况下,您需要控制编码,有几种方法可以覆盖JavaMail的默认行为。一种简单的方法如下。创建完整邮件后,请调用msg.saveChanges()
,然后使用类似mbp.setHeader("Content-Transfer-Encoding", "base64")
的内容强制执行给定正文部分的base64编码。
另一种方法是子类MimeBodyPart
并覆盖updateHeaders
方法,以便它首先调用super.updateHeaders()
,然后按上面设置Content-Transfer-Encoding
标题。
答案 1 :(得分:2)
只需添加以下声明:
part.setHeader("Content-Transfer-Encoding", "base64");
设置part.setDataHandler(..)
或part.setContent(...)
的代码行后,dataSource / Handler将自行调整以匹配您刚刚为正文部分指定的内容传输编码
您可能还需要考虑使用相同的标记设置标头,例如:
part.setHeader("Content-Type", "application/octet-stream");