2013-10-21 57 views
1

我有一些Java代碼發出的代碼有點像下面的電子郵件:其實我從Httprequest參數Mimemessage,並在該mimemessage我要追加一些內容到現有的身體。JavaMail內容傳輸編碼問題

如果Mimemessage是多部分內容類型,我不會在發送消息時遇到任何問題。

如果消息是text/plain和text/html content-type,我設置的內容傳輸編碼沒有應用到body。在此基礎上docs

Q

:儘管JavaMail是否所有的編碼和解碼對我來說,我需要手動控制編碼的一些身體部位。答:在極少數情況下,您需要控制編碼,有幾種方法可以覆蓋JavaMail的默認行爲。一個簡單的方法如下。創建完整消息後,調用msg.saveChanges(),然後使用mbp.setHeader(「Content-Transfer-Encoding」,「base64」)等強制給定正文部分的base64編碼。

另一種方法是繼承MimeBodyPart並覆蓋updateHeaders方法,以便它首先調用super.updateHeaders(),然後設置Content-Transfer-Encoding標頭,如上所述。

以上也適用。但它不適合我。

InputStream ins = request.getInputStream(); 
MimeMessage msg = new MimeMessage(session,ins); 
msg.setContent("some non-Ascii content","text/plain; charset="UTF-8""); 
//Tried setheader before saveChanges() method, also doesn't work for me 
//msg.setHeader("Content-Transfer-Encoding","base64"); 
msg.saveChanges(); 
//Now tried based on above docs after saveChanges method, also doesn't work 
msg.setHeader("Content-Transfer-Encoding","base64"); 

請幫忙解決這個問題。

回答

0

您在other post中複製了大部分此問題,我在那裏回答了部分問題。

您可能會更好地在http請求中發送郵件消息的內容,然後根據該內容在服務器上創建新消息,而不是嘗試將完整的MIME消息發送到服務器,然後編輯。