【问题标题】:Java Mail: force "Content-Transfer-Encoding" to be "quoted-printable"Java Mail:强制“Content-Transfer-Encoding”为“quoted-printable”
【发布时间】: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


【解决方案1】:

我对电子邮件正文的这个问题有所不同。我的任务是复制另一个程序的输出,该程序即使在不需要时也总是使用引用的 printable。最终起作用的是确保我在将文本添加到消息之后设置了Content-Transfer-Encoding 标头。也许同样的事情也适用于哑剧部分。在设置内容后尝试设置标题(可能会覆盖您设置内容时 JavaMail 决定的任何内容)。

FWIW,我正在使用 JavaMail 1.5.5

【讨论】:

    猜你喜欢
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2017-10-03
    • 2014-03-01
    • 2014-02-10
    • 2012-04-15
    相关资源
    最近更新 更多