电子邮件验证是不是需要域部分包含一个点?

Posted

技术标签:

【中文标题】电子邮件验证是不是需要域部分包含一个点?【英文标题】:Should email validation requires the domain part contains a dot?电子邮件验证是否需要域部分包含一个点? 【发布时间】:2015-03-15 14:00:45 【问题描述】:

我注意到<input type="email" /> 的内置浏览器验证需要xxx@xxx 的格式。仅需要 @ 字符。不需要点,比如email@***.com

和流行的jQuery.inputmask一样,email别名的规则也不需要点。

我只是好奇。现在是忽略电子邮件验证中的点的标准方法吗?我没有在根级域上看到任何电子邮件地址。忽略点的原因是什么?

【问题讨论】:

Why does html5 form-validation allow emails without a dot? 的可能重复项 电子邮件很复杂,几乎任何包含@ 的东西都可能是电子邮件,甚至bill@com,这就是验证过于严格容易导致问题的原因。 谢谢,朱哈娜。它似乎是重复的。 Play framework 需要域中的点,不幸的是,因为 MS userPrincipalName(也基于 RFC-822)验证时没有点。 【参考方案1】:

RFC 822,第 6 章,给出了扩展巴科斯-瑙尔形式 (BNF) 中的地址规范:

addr-spec   =  local-part "@" domain
local-part  =  word *("." word)
domain      =  sub-domain *("." sub-domain)

使用此规范a@b 是一个有效的地址。

【讨论】:

规范是愚蠢的,因为现实生活中的每个电子邮件地址都有一个 .com、.net 等。忘记结尾是一个有点常见的用户错误,所以在现实生活中,遵循规范意味着很多错误的电子邮件地址被接受。 @Acyra,该规范一点也不愚蠢,因为user@localhost 是一个完全有效的电子邮件,user@com 也是如此。第二种类型的示例是,截至 2018 年 10 月,域 uz 是 TLD 可以指向的内容。如果您好奇,请查看 nslookup uz 的结果。

以上是关于电子邮件验证是不是需要域部分包含一个点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS SES 中验证电子邮件地址

如何在不使用java发送任何邮件的情况下检查域中是不是存在电子邮件ID

检查文本区域是不是包含符号并删除符号后的所有内容

如何在 python 中验证域的 MX 记录?

如何在表单中验证电子邮件地址的域?

电子邮件地址域部分是否允许注释?