【问题标题】:How to create a mail attachment filename with umlauts and unterscore?如何使用变音符号和下划线创建邮件附件文件名?
【发布时间】:2016-02-14 00:25:55
【问题描述】:

我想使用带有邮件附件的javax.mail-api 发送电子邮件。文件名应包含变音符号和下划线。

为了得到正确的文件名,我正在测试如下:

    Session session=Session.getDefaultInstance(new Properties());
    MimeMessage mimeMsg= new MimeMessage(session);
    mimeMsg.setSubject("Ä_my_test_string","utf-8");
    System.out.println(mimeMsg.getHeader("Subject")[0]);

结果:=?utf-8?Q?=C3=84=5Fmy=5Ftest=5Fstring?=

问题:如何获得与输入字符串完全相同的邮件主题?

【问题讨论】:

  • 您是否尝试过实际发送邮件?我想您会发现主题在大多数邮件阅读器中都能正确显示。您看到的是以quoted-printable 编码的主题,因为电子邮件规范已经要求了很长时间。
  • 好的,但是当我收到邮件时,例如在outlook 中,文件名包含上面的字符串结果。 “编码”字符不会被解释。
  • 出于好奇,您是否尝试过将该邮件发送给任何非 Outlook 收件人,例如免费的网络邮件帐户?
  • 确实,我也尝试过gmail,但结果相同。
  • 确实很奇怪。这是一个长镜头,但是……将字符集从“utf-8”更改为“UTF-8”有什么不同吗?

标签: java email jakarta-mail


【解决方案1】:

javax.mail.internet.MimeUtility 类包含用于对标头进行编码和解码的方法。

public static void main(String[] args) throws Exception {
    System.out.println(MimeUtility.decodeText("=?utf-8?Q?=C3=84=5Fmy=5Ftest=5Fstring?="));
}

【讨论】:

  • 遥控器可能没有解码功能。我们必须在发送阶段解决它。
猜你喜欢
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多