【发布时间】:2015-10-20 18:20:42
【问题描述】:
目前,电子邮件显示有问题的 MimeBodyPart 的以下标题:
------=_Part_56_339247379.1438186660985
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
这是标题部分应该显示的内容:
----boundary_0_e825c994-ed10-443c-a2e7-d107b27d31dd
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
这是我试图强制引用打印的方式:
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setHeader("Content-Transfer-Encoding", "quoted-printable");
如何强制 Content-Transfer-Encoding 被引用打印?我正在连接到我的 gmail 邮件服务器,如果这有什么不同的话。也许该标题被谷歌覆盖。
【问题讨论】:
-
为什么您认为 Content-Transfer-Encoding 应该是可引用打印的?通常,JavaMail 会根据您的邮件内容选择适当的编码。设置标头应该可以覆盖 JavaMail 的选择。如果在发送之前使用 Message.writeTo 写出消息,它的标题是否正确?
-
"为什么你认为 Content-Transfer-Encoding 应该是可引用打印的?"我不。但是,我们以编程方式发送的电子邮件必须由第三方项目处理。设置标题似乎没有任何效果。打印标题不会产生任何变化。我这样设置文本: messageBodyPart.setText("");
-
所以您正在处理一个不了解如何正确处理 MIME 消息的有缺陷的第三方程序?叹。您使用的是什么版本的 JavaMail?你有一个简单的程序来重现这个错误吗?
标签: java email character-encoding gmail jakarta-mail