通过 SO 和 Google 进行挖掘,我试图弄清楚国际化电子邮件地址的使用现状如何。最佳答案来自 2021 年。根据我的研究,我的理解如下:
域名部分:Unicode 字符已可用于电子邮件地址的域名部分。这些字符会使用明确定义的算法自动编码为“国际化域名”(IDNA)。
邮箱部分:仅当使用 SMTPUTF8 协议时,地址的邮箱部分才可以使用 Unicode 字符。 SMTPUTF8 协议为电子邮件地址提供完整的 Unicode 支持。然而问题是,截至 2021 年,SMTPUTF8 协议的采用还不够广泛。如果消息传递链中的任何服务器不支持 SMTPUTF8,则发件人必须回退到常规 SMTP,并使用接收端正在使用的一些启发式方法将电子邮件邮箱名称转换为其 ASCII 别名。这些启发式规则没有标准化,发送者需要确切地知道接收端是如何进行别名处理的。因此,这个解决方案不能很好地推广。
所以,如果我没理解错的话,这意味着我们已经可以在域名中使用 Unicode 字符了,但是对于邮箱部分,一切就变成了“对 SMTPUTF8 的普遍支持有多好?”的问题
这个推理正确吗?目前(2023 年)对 SMTPUTF8 的支持有多好?
域名部分:Unicode 字符已可用于电子邮件地址的域名部分。这些字符会使用明确定义的算法自动编码为“国际化域名”(IDNA)。
是的,我相信你的推理基本上都是正确的。从技术角度来看,正如您所指出的,国际化域名通过 IDNA 规范规则 的 ASCII 兼容编码得到 SMTP 的完全支持。向 IDN 发送电子邮件应该没有问题。
请注意,“国际化域名”是 IDN,而不是 IDNA。 “IDNA”中的“A”代表根据上述规范的A应用程序中的国际化域名,并控制应用程序应如何处理 IDN。
如果消息传递链中的任何服务器不支持 SMTPUTF8,则发件人必须回退到常规 SMTP,并使用接收端正在使用的一些启发式方法将电子邮件邮箱名称转换为其 ASCII 别名。这些启发式规则没有标准化,发送者需要确切地知道接收端是如何进行别名处理的。因此,这个解决方案不能很好地推广。
由于垃圾邮件滥用,现在传输链中很少有公共电子邮件转发器。 “链”由发送方的一台或多台内部服务器和接收方的一台或多台内部服务器组成,但中间没有公共服务器。
我进一步冒险,如果有人给你一个带有国际化本地部分的电子邮件地址,那么不言而喻,他们域的MX服务器必须通告SMTPUTF8,并且将接受国际化本地部分。如果情况并非如此,那么向您提供电子邮件地址的人将永远无法收到任何人的电子邮件,因此您的通讯员不会给出该地址!
所以基本上,发送方只需要确保他们的系统在处理国际化本地部分时支持创建 SMTPUTF8 会话,而接收方应该很好。截至 2024 年撰写本文时,默认情况下应该普遍支持此功能。例如,2015 年 2 月发布的 Postfix 3 添加了 SMTPUTF8 支持,它默认为 yes,并且如果收件人服务器通告它并且存在 UTF,则 Postfix 默认使用 SMTPUTF8 -8 邮件信封和标题中的内容。
但是,尽管如此,其他一些考虑因素是邮件列表和各种网络表单,它们可能不接受国际化的本地部分,因为它们的创建者做了一些愚蠢的事情,例如尝试使用正则表达式验证电子邮件地址。
因此,即使在 2024 年,我在向用户发布国际化本地部分之前也会犹豫,如果我这样做,我总是会提供一个 ASCII 别名供用户在不支持主要国际化形式的系统中使用。