2012-02-03 80 views
3

我有发出一封电子邮件,其中的代码有点像下面的一些Java代码:JavaMail的base64编码

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?

回答

7

docs

问:尽管JavaMail是否所有的编码和解码对我来说,我需要手动控制编码的一些身体部位。 答:在极少数情况下,您需要控制编码,有几种方法可以覆盖JavaMail的默认行为。一个简单的方法如下。创建完整消息后,请拨打msg.saveChanges(),然后使用类似mbp.setHeader("Content-Transfer-Encoding", "base64")的内容强制给定身体部位的base64编码。

另一种方法是子类MimeBodyPart并重写updateHeaders方法,以便它首先调用super.updateHeaders(),然后设置作为上述Content-Transfer-Encoding报头。

2

只需添加以下语句:

part.setHeader("Content-Transfer-Encoding", "base64"); 

该设置或part.setContent(...),以及数据源/处理器会调整自己,以配合你仅仅是为了身体的一部分指定的内容传输编码的代码行。

您也可以考虑同样的道理,例如:

part.setHeader("Content-Type", "application/octet-stream"); 
设置标头