【问题标题】:java Mail API receiving email attachment with vietnamese charactersjava Mail API接收带有越南语字符的电子邮件附件
【发布时间】:2010-09-28 04:46:52
【问题描述】:

最近我按照 Sun 在线指南上的 Java Mail API 发送电子邮件、下载电子邮件和下载附件。在从电子邮件中提取附件时,我的代码看起来与这篇文章非常相似 Download attachments using Java Mail

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

当代码尝试通过 bodyPart.getFileName() 获取文件名时,返回的文件名是这样的:h? th?ng =?iso-8859-1?b?dGj0bmcueGxz?=

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

1) 设置Java VM参数:-Dfile.encoding=UTF-8

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

任何提示都会有所帮助。谢谢!

【问题讨论】:

    标签: java jakarta-mail


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 有没有办法设置JavaMail BodyPart识别UTF-8?
      • 如果消息以 UTF-8 正确编码,那么 JavaMail 应该自动处理它。我的意思是,也许消息实际上并没有以 UTF-8 编码。
      • 我明白了...我从其中一个标题中看到的电子邮件客户端表明它不是普通的电子邮件客户端。当我尝试使用 Outlook 电子邮件客户端附加相同的文件时,程序可以正确获取文件名。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 2011-11-09
      • 2021-03-06
      • 2014-08-29
      • 1970-01-01
      • 2016-02-18
      • 2015-07-08
      • 2022-10-22
      相关资源
      最近更新 更多