2017-02-28 49 views
0

我通過javax.mail發送帶附件的電子郵件。 當有西裏爾字母或重音符號(當只有標準的拉丁符號時,一切正常)時,MS Outlook顯示附件名稱,如「ATTxxx.xxx」。當我使用網絡界面時,名稱是正確的。在Outlook中收到電子郵件時附件名稱不正確

添加附件:

private void attachFile(DataSource source, String attachmentName) 
    throws MessagingException, UnsupportedEncodingException { 
     MimeBodyPart filePart = new MimeBodyPart(); 
     filePart.setDataHandler(new DataHandler(source)); 
     filePart.setFileName(MimeUtility.encodeText(attachmentName, charsetUTF, null)); 
     filePart.setHeader("Content-Transfer-Encoding", "base64"); 
     mp.addBodyPart(filePart); 
    } 

我GOOGLE了很多,但還沒有找到任何解決辦法。

+0

您使用的是什麼版本的JavaMail?而不是你自己的編碼文件名,可以設置['mail.mime.encodefilename'](https://javamail.java.net/nonav/docs/api/javax/mail/internet/package-summary.html#mail .mime.encodefilename)屬性。您可能還需要設置['mail.mime.encodeparameters'](https://javamail.java.net/nonav/docs/api/javax/mail/internet/package-summary.html#mail.mime.encodeparameters )屬性爲false以禁用RFC 2231編碼,而舊版本的Outlook不理解。 –

+0

謝謝!我的問題解決了。現在我使用最新版本的javax.mail - 1.5.0-b01,一切正常。你能寫這個答案嗎? –

+0

最新的是1.5.6。 –

回答

0

解決方案是使用最新版本的javax.mail - 1.5.6,感謝Bill Shannon。

相關問題