【问题标题】:What is the proper non ascii (UTF-8) email message text encoding in a multipart message多部分邮件中正确的非 ascii (UTF-8) 电子邮件文本编码是什么
【发布时间】:2022-12-06 01:14:02
【问题描述】:

我想从 Java 发送带有附件的电子邮件(通过 Spring 的 org.springframework.mail.javamail.JavaMailSender)。所以消息应该是多部分的。

编码的消息体看起来像

From: another@address
To: an@address
Subject: Unimportant message
Content-Type: multipart/mixed; boundary="----=_Part_0_1457006650.1670256299458"
 ...
------=_Part_0_1457006650.1670256299458
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello,

=E2=80=9ESomething here=E2=80=9C

------=_Part_0_1457006650.1670256299458
Content-Type: image/png; name=sample.png
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=sample.png
Content-Description: sample.png

iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9
  ...
FElEQVQY02P8z8WABzAxMIxKYwIATTQBHSBDi6AAAAAASUVORK5CYII=
------=_Part_0_1457006650.1670256299458--

Web Outlook 无法正确显示非 ASCII 字符,显示邮件正文中每个 UTF-8 字节的占位符。例如

我尝试了不同的 Transfer-Message-Encoding 值和不同的多部分布局(多个顶级部分,并作为部分嵌套在 root-multipart 中)但结果似乎相同 - 似乎 Web Outlook 确实考虑了传输编码但是无法将消息文本编码识别为 UTF-8。

这是 Outlook Web 的问题吗?或者消息应该有一些额外的元信息或不同的多部分布局?

我可能可以使用 HTML 编码,但消息是从模板生成的,因此,如果我理解正确,所有非 ASCII 符号都必须自动转换为实体。除了纯文本消息之外,我们不需要任何花哨的格式,因此该选项似乎过于复杂。

【问题讨论】:

  • 最好张贴一个完全的例子
  • 你到底想看什么?
  • 可以测试的东西?

标签: java email encoding utf-8 smtp


【解决方案1】:

听起来您遇到了 Outlook Web 处理电子邮件字符编码的方式问题。这可能是 Outlook Web 本身的问题,也可能是邮件构建方式的问题。

要解决此问题,您可以尝试向邮件添加额外的元信息以指定字符编码。这通常可以通过将“Content-Type”标头添加到带有“charset”参数的消息中来完成,例如“Content-Type:text/plain;charset=UTF-8”。这有助于确保电子邮件客户端正确解释邮件。

您也可以尝试对消息使用不同的传输编码,例如“7bit”或“8bit”。这有助于确保消息正确传输,并且特殊字符不会在传输过程中损坏。

此外,您可能需要考虑对邮件正文使用 HTML 编码,因为这可以更好地控制字符编码,并有助于确保正确显示特殊字符。这可能需要一些额外的工作来将非 ASCII 字符转换为 HTML 实体,但如果它有助于确保正确显示消息,那么这是值得的。

总的来说,您可以尝试几种不同的方法来解决此问题并确保您的电子邮件在 Outlook Web 中正确显示。试验字符编码、传输编码和 HTML 编码的不同组合可以帮助您找到适合您特定情况的最佳解决方案。

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 2020-08-07
    • 2013-04-21
    • 2018-07-11
    • 2013-07-13
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多