我正在用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,但这是一个延伸,测试人员也看到其他客户的错误。
(相关但不相关:邮件正文中的相同名称显示正常)
答案 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