本地部分末尾带有破折号的电子邮件 ID

Jim*_*mes 19 email

如果电子邮件在电子邮件的本地部分末尾有一个破折号 (-),它是一个有效的电子邮件吗?例如,

an.unusual.email-@mydomain.com

或者概括地说,这些字符 ( Characters !#$%&'*+-/=?^_``{|}~ (ASCII: 33, 35-39, 42, 43, 45, 47, 61, 63, 94-96, 123-126)) 中的任何一个都可以在电子邮件 ID 的开头和/或结尾处出现在电子邮件的本地部分吗?

谷歌说它是无效的,所以暂时我也认为它是无效的,尽管 RFC 只排除了 [dot] 字符从本地部分开始和/或结束。

上述情况的 GMail 错误

注意:我不关心域部分,因为 DNS 的方式使问题和答案变得复杂,这会变得更加复杂。

https://social.technet.microsoft.com/Forums/ie/en-US/69f393aa-d555-4f8f-bb16-c636a129fc25/what-are-valid-and-invalid-email-address-characters

use*_*686 60

如果电子邮件在电子邮件的本地部分末尾有一个破折号 (-),它是一个有效的电子邮件吗?[...] 谷歌说它是无效的,所以暂时我也认为它是无效的,尽管 RFC 只排除了 [dot] 字符从本地部分开始和/或结束。

这是有效的。你只会看到它被谷歌拒绝,因为它执行了完全不同的检查——他们有自己的关于本地部分可以是什么的政策,许多其他供应商也是如此。


仅当表单实际上要求提供现有的有效电子邮件地址(可能来自提供商)时,Google 或其他任何人才有义务接受所有可能有效的电子邮件地址。例如,如果 Gmail 的收件人:/抄送:字段拒绝了有效地址,则会出错。

但是您突出显示的字段不会要求您提供现有的电子邮件地址;它要求提供Google 系统上帐户名称,只有在创建帐户后名称才会作为电子邮件地址的基础。没有什么可以禁止 Google 或其他任何人在他们自己的系统上限制一组有效的帐户名称(或者,实际上,甚至是邮箱名称)。

或者,换句话说,为“本地部分”定义允许的字符仅意味着邮件应用程序 SMTP 服务器必须接受 RFC 822 标头和 SMTP 命令中的此类地址——但它并没有说明能够创建此类邮箱。(确实,在编写早期电子邮件 RFC 并且大多数邮箱仍与操作系统级帐户相关联时,它们的名称具有相似甚至更严格的限制。)

例如,RFC 5321 的这一部分(ABNF 下方的第 4.1.2 节)明确表示允许接收主机并且确实应该对其自己的邮箱命名方式有更严格的限制:

虽然上面对本地部分的定义相对宽松,但为了最大的互操作性,希望接收邮件的主机应该避免定义本地部分需要(或使用)引号形式的邮箱或本地部分是 case -敏感的。

因此,尽管anunusualemail-@gmail.com 语法上有效的,但这并不意味着 Google 必须允许您创建它。

  • 作为一个有趣的旁注,谷歌忽略电子邮件地址中的句点 (https://gmail.googleblog.com/2008/03/2-hidden-ways-to-get-more-from-your.html) ,这也不是t 在 RFC 中指定。因此,myname@gmail.com 与 my.name@gmail.com 或 myname@gmail.com 位于同一位置。 (6认同)
  • @JimsonKannantharaJames 一般来说,如果您想检查电子邮件是否有效,您实际上应该向该地址发送电子邮件并强制用户采取行动。任何仅基于地址语法的检查都应该只是为了捕捉用户的拼写错误。 (4认同)
  • @ user71659 您将两个不同的问题混为一谈并混淆了论点。MichaelMior 完全正确地指出,要*验证*电子邮件地址*存在*,您*将*必须向该地址发送一封电子邮件,这需要用户操作。 (2认同)

dav*_*ham 6

G Suite(正式名称为 Google Apps for Your Domain)确实允许在电子邮件地址中使用连字符(破折号),即使作为最后一个字符也是如此。

用户名可以包含字母 (az)、数字 (0-9)、破折号 (-)、下划线 (_)、撇号 (') 和句点 (.)。

来源:名称和密码指南

正如您所指出的,Gmail 不允许在电子邮件地址中使用连字符。