3

我正在使用 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,但这有点牵强,测试人员也看到其他客户端的错误。

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

4

2 回答 2

2

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

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

所以,我现在正在创建InternetAddresswith UTF-8,它解决了这个问题。

于 2012-08-28T14:16:01.383 回答
0

很高兴看到为InternetAddress对象定义字符集为您修复了它。

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

-Dfile.encoding=utf-8

于 2014-09-18T12:58:34.867 回答