源名称中的德语字母未显示在Java Mail中

时间:2012-08-28 14:05:45

标签: utf-8 character-encoding javamail

我正在用Java Mail发送邮件。我使用以下内容设置发件人信息:

msg.setFrom(new InternetAddress("test@example.com", "Schaltfläche"));

问题:当我将此邮件发送给我的GMail时,发件人显示为 Schaltfl?che

在源头中:

From: "=?ANSI_X3.4-1968?Q?Schaltfl=3Fche?=" <test@example.com>

哪个看起来......好吗?至少看来已经做了很多工作来编码ä

那么,我做错了什么?我可以责怪GMail,但这是一个延伸,测试人员也看到其他客户的错误。

(相关但不相关:邮件正文中的相同名称显示正常)

2 个答案:

答案 0 :(得分:2)

通过更多搜索,我发现了两件事:

  • ANSI_X3.4-1968显然是ASCII的规范名称,当然不能编码ä。另外,=3F解码为(不知道为什么它首先需要编码)。
  • 有一个构造函数InternetAddress(mail, name, charset)

所以,我现在正在使用InternetAddress创建UTF-8,以解决问题。

答案 1 :(得分:0)

很高兴看到为InternetAddress对象定义charset为你修复了它。

另一种解决方案(特别是如果您无法更改代码)将通过相应的VM参数运行具有已定义编码的JVM:

-Dfile.encoding=utf-8