如果电子邮件的本地部分末尾有破折号 (-),则该电子邮件是否有效?例如,
或者概括地说,这些字符(Characters !#$%&'*+-/=?^_``{|}~ (ASCII: 33, 35-39, 42, 43, 45, 47, 61, 63, 94-96, 123-126)
)中的任何一个都可以有效地位于电子邮件本地部分,位于电子邮件 ID 的开头和/或结尾?
谷歌说它无效,所以暂时我也认为它无效,尽管 RFC 仅排除了以 [dot] 字符开始和/或结束本地部分。
注意:我并不关心域部分,因为 DNS 的方式使得域部分变得更加复杂,从而使问题和答案变得复杂。
答案1
如果电子邮件在本地部分的末尾有一个破折号 (-),那么它是有效的电子邮件吗? [...] Google 表示它无效,所以暂时我也认为它无效,尽管 RFC 仅排除了以 [点] 字符开头和/或结尾的本地部分。
这是有效的。你看到它被谷歌拒绝只是因为它执行了完全不同的检查——他们对什么有自己的政策局部部分可以,许多其他提供商也一样。
谷歌或其他任何人都有义务接受所有可能有效的电子邮件地址,但前提是表单确实要求现有的有效电子邮件地址(可能来自提供商)。例如,如果 Gmail 的收件人:/抄送:字段拒绝了有效的地址。
但你突出显示的字段不会要求你提供现有的电子邮件地址;它要求提供Google 系统上的帐户名称,只有在创建帐户后,它才会成为电子邮件地址的基础。没有什么可以禁止 Google 或任何其他人限制有效帐户名称集(或者,实际上甚至是邮箱名称)在他们自己的系统上。
或者换句话说,定义“本地部分”允许的字符仅意味着邮件应用程序 SMTP 服务器必须在 RFC 822 标头和 SMTP 命令中接受此类地址 - 但它没有提到能够创造这样的邮箱。(事实上,当早期的电子邮件 RFC 被编写时,大多数邮箱仍然与操作系统级帐户绑定,它们的名称有类似甚至更严格的限制。)
例如,RFC 5321 的这一部分(第 4.1.2 节,ABNF 之下)明确指出,接收主机可以并且确实可以应该对于其自身邮箱的命名有更严格的限制:
尽管上述对本地部分的定义相对宽松,但为了实现最大程度的互操作性,希望接收邮件的主机应避免定义本地部分需要(或使用)带引号的字符串形式或本地部分区分大小写的邮箱。
因此,尽管[email protected]
是从句法上来说有效,但仅凭这一点并不意味着 Google 必须允许您创建它。
答案2
G Suite(正式名称为“适用于您的域的 Google Apps”)允许在电子邮件地址中使用连字符(破折号),甚至可以作为最后一个字符。
用户名可以包含字母 (az)、数字 (0-9)、破折号 (-)、下划线 (_)、撇号 (') 和句点 (.)。
来源:名称和密码指南
正如您提到的,Gmail 不允许在电子邮件地址中使用连字符。