2012-02-03 88 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"); 
設置標頭