2010-09-28 180 views
0

最近,我按照Java郵件API的Sun在線指南發送電子郵件,下載電子郵件和下載附件。當談到從電子郵件中提取附件,我的代碼看起來非常相似,這個帖子Download attachments using Java Mailjava郵件API接收電子郵件附件,包含越南文字符

但是,我遇到一個問題,當用戶與越南的性格,像這樣的東西發送電子郵件附件的文件名:他丁字褲丁字褲。 xls

當代碼嘗試獲取文件名時:bodyPart.getFileName(),返回文件名如下所示:h? TH NG = ISO-8859-1 b dGj0bmcueGxz =

我有嘗試以下方法,但沒有任何運氣

1)設置Java虛擬機參數:?????-Dfile.encoding = UTF-8

2)試圖進一步考慮對UTF-8字符支持Java郵件API,但找不到任何

任何暗示將幫助。謝謝!

回答

1

ISO-8859-1是Latin-1字符集。它只包括西歐字符。所以這可能是一個暗示。也許問題在於發送附件的客戶端?看看消息的原始來源,檢查是否有任何頭文件提到了有關文本編碼的任何內容。

+0

指定此方法解碼的名字有什麼辦法來設置的JavaMail BodyPart的認識UTF- 8? – Reusable 2010-09-28 05:22:47

+0

如果郵件以UTF-8正確編碼,則JavaMail應自動處理。我的觀點是,也許這個消息實際上並沒有以UTF-8編碼。 – 2010-09-28 05:30:20

+0

我明白了...我從其中一個標題看到的電子郵件客戶端顯示它不是普通的電子郵件客戶端。當我嘗試使用Outlook電子郵件客戶端附加相同的文件時,該程序可以正確獲取文件名。謝謝! – Reusable 2010-09-29 01:10:27

3

您可以使用MimeUtility.decodeWord(bodyPart.getFileName())來獲取文件的實際名稱。

由於郵件標題只能包含ASCII字符,RFC 2047介紹瞭如何編碼其他字符集,並在RFC 2047