JavaMail base64编码

JavaMail base64编码,java,encoding,base64,jakarta-mail,mime,Java,Encoding,Base64,Jakarta Mail,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("Imp

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

来自:

问:尽管JavaMail为我完成了所有的编码和解码,但我需要手动控制身体某些部位的编码。 答:在极少数需要控制编码的情况下,有几种方法可以覆盖JavaMail的默认行为。一个简单的方法如下。创建整个消息后,调用
msg.saveChanges()
,然后使用类似
mbp.setHeader(“内容传输编码”,“base64”)
的方法强制对给定的身体部位进行base64编码


另一种方法是子类化
MimeBodyPart
并重写
updateHeaders
方法,以便它首先调用
super.updateHeaders()
,然后如上所述设置
内容传输编码
头。

只需添加以下语句:

part.setHeader("Content-Transfer-Encoding", "base64");
在设置
part.setDataHandler(…)
part.setContent(…)
的代码行之后,数据源/处理程序将自行调整以匹配您刚才为主体部分指定的内容传输编码

您可能还想考虑用相同的标记设置页眉,例如:

part.setHeader("Content-Type", "application/octet-stream");
我有类似的问题,请告诉我。