JavaMail base64编码

时间:2012-02-03 06:26:33

标签: java encoding base64 javamail mime

我有一些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?

2 个答案:

答案 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");