java Mail API接收带有越南语字符的电子邮件附件

java Mail API接收带有越南语字符的电子邮件附件,java,jakarta-mail,Java,Jakarta Mail,最近,我已经按照Java Mail API上的Sun在线指南发送电子邮件、下载电子邮件和下载附件。当谈到从电子邮件中提取附件时,我的代码与本文非常相似 但是,当用户发送带有越南语字符的电子邮件附件文件名时,我遇到了一个问题,类似这样:hệ thống thông.xls 当代码尝试获取带有:bodyPart.getFileName()的文件名时,返回的文件名如下:h?th?ng=?iso-8859-1?b?dGj0bmcueGxz= 我尝试了以下方法,但没有任何运气 1) 设置Java虚拟机参数

最近,我已经按照Java Mail API上的Sun在线指南发送电子邮件、下载电子邮件和下载附件。当谈到从电子邮件中提取附件时,我的代码与本文非常相似

但是,当用户发送带有越南语字符的电子邮件附件文件名时,我遇到了一个问题,类似这样:hệ thống thông.xls

当代码尝试获取带有:bodyPart.getFileName()的文件名时,返回的文件名如下:h?th?ng=?iso-8859-1?b?dGj0bmcueGxz=

我尝试了以下方法,但没有任何运气

1) 设置Java虚拟机参数:-Dfile.encoding=UTF-8

2) 尝试进一步研究关于UTF-8字符支持的Java Mail API,但找不到任何支持


任何暗示都会有帮助。谢谢大家!

ISO-8859-1是拉丁字符集。它只包括西欧字符。所以这可能是一个暗示。也许问题出在发送附件的客户机上?查看消息的原始来源,检查是否有任何标题说明了文本编码。

ISO-8859-1是拉丁字符集。它只包括西欧字符。所以这可能是一个暗示。也许问题出在发送附件的客户机上?查看消息的原始源,检查是否有任何标题说明了文本编码。

您可以使用MimeUtility.decodeWord(bodyPart.getFileName())获取文件的实际名称


由于邮件头只能包含ASCII字符,RFC 2047描述了如何对其他字符集进行编码,并且此方法按照RFC 2047中的指定对名称进行解码。

您可以使用MimeUtility.decodeWord(bodyPart.getFileName())获取文件的实际名称


由于邮件头只能包含ASCII字符,RFC 2047描述了如何对其他字符集进行编码,并且该方法按照RFC 2047中的规定对名称进行解码。

是否有任何方法可以将JavaMail BodyPart设置为识别UTF-8?如果消息以UTF-8正确编码,则JavaMail应该自动处理它。我想说的是,也许这条信息实际上没有被编码成UTF-8。我明白了。。。我从其中一个标题中看到的电子邮件客户端表明它不是一个普通的电子邮件客户端。当我尝试使用outlook电子邮件客户端附加同一文件时,程序可以正确获取文件名。非常感谢。有没有办法将JavaMail BodyPart设置为识别UTF-8?如果消息正确地编码为UTF-8,那么JavaMail应该自动处理它。我想说的是,也许这条信息实际上没有被编码成UTF-8。我明白了。。。我从其中一个标题中看到的电子邮件客户端表明它不是一个普通的电子邮件客户端。当我尝试使用outlook电子邮件客户端附加同一文件时,程序可以正确获取文件名。非常感谢。