【问题标题】:How to escape a full email address for SMTP in the headers when the email address contains non-ascii chars当电子邮件地址包含非 ascii 字符时,如何在标头中转义 SMTP 的完整电子邮件地址
【发布时间】:2020-04-09 10:27:57
【问题描述】:

这是关于发送电子邮件地址中包含非 ASCII 字符的电子邮件。

当我使用将 TO /RCPT 内容发送到 SMTP 服务器时,我知道我需要在这里使用 punycode。

但是 To: 和 From: 标题呢?我再次知道,如果用户友好部分包含非 ascii 字符,我将使用我也用于主题的标准标题编码。但是这种编码只用于用户友好的部分。

但是如果电子邮件地址包含非 ascii 字符怎么办?必须如何格式化 To 标头。

那么如何编码“Tüst”?

据我所知,这是编码。

"=?iso-8859-1?Q?T=FCst?="<tüst@domain.de>

但是电子邮件地址呢。

事实上:我不理解 RFC。我很努力但失败了。

【问题讨论】:

    标签: email unicode encoding smtp


    【解决方案1】:

    答案是:UTF-8 是对标头进行编码的正确方式。

    经过更多研究,我发现了隐藏在这篇文章中的答案:

    https://en.wikipedia.org/wiki/International_email

    虽然电子邮件标题部分的传统格式允许 非 ASCII 字符将包含在某些的值部分中 使用 MIME 编码词的标题字段(例如,在显示名称或 在 Subject 标头字段中),不得使用 MIME 编码来编码 标头中的其他信息,例如电子邮件地址或标头 Message-ID 或 Received 等字段。此外,MIME 编码 需要对标头进行额外处理才能将数据转换为和 从其 MIME 编码的单词表示,并损害了可读性 标题部分。

    2012 年标准 RFC 6532 和 RFC 6531 允许包含 使用 UTF-8 编码的标头内容中的 Unicode 字符,以及它们的 通过 SMTP 传输 - 但实际上支持只是缓慢滚动 [5]

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 2017-03-01
      • 2018-08-20
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2015-01-12
      • 2016-02-21
      • 2023-03-18
      相关资源
      最近更新 更多