最近,我按照Sun Mail API指南发送电子邮件,下载电子邮件和下载附件。从电子邮件中提取附件时,我的代码与此帖Download attachments using Java Mail
非常相似但是,当用户发送带有越南字符的电子邮件附件文件名时遇到问题,如下所示:hệthốngthông.xls
当代码尝试使用: bodyPart.getFileName()获取文件名时,返回文件名是这样的:h? th?ng =?iso-8859-1?b?dGj0bmcueGxz?=
我试过以下但没有运气
1)设置Java VM参数:-Dfile.encoding = UTF-8
2)尝试进一步了解UTF-8字符支持上的Java Mail API,但无法找到任何
任何提示都会有所帮助。谢谢!
答案 0 :(得分:3)
您可以使用MimeUtility.decodeWord(bodyPart.getFileName())来获取文件的实际名称。
由于邮件标题只能包含ASCII字符,因此RFC 2047描述了如何编码其他字符集,此方法对RFC 2047中指定的名称进行解码。
答案 1 :(得分:1)
ISO-8859-1是Latin-1字符集。它只包括西欧人物。所以这可能是一个提示。也许问题出在发送附件的客户端?查看邮件的原始来源,检查是否有任何标题说明了文本编码。