我有一些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");
請幫忙解決這個問題。