是" somestring @ somestring。"有效的电子邮件地址?

时间:2015-01-13 16:28:11

标签: regex validation email

在验证.NET应用程序中的电子邮件地址时,建议只使用MailAddress(String)构造函数,如果参数的格式不正确,则应该抛出异常地址。有一些关于什么有和没有资格作为正确的电子邮件地址的神话,甚至谷歌也被要求提供一个正则表达式,除其他外,不正当地取消了带有刻度标记的地址。

现在说,我注意到一个实例,其中格式somestring@somestring.的字符串没有被构造函数无效,尽管没有任何东西在点的右边。我确实认为所有不使用IP地址的内容都需要一个点和右边的内容,但supposedlyadmin@mailserver1格式完全有效。但它仍然不是完全相同的格式,所以我运行了几个测试here

o'reilly@somestring.com    - valid
somestring@somestring.     - invalid

并且this source听起来像somedomainsomedomain.都是合法的域名,并且它们实际上是彼此等同的,尽管它也说某些程序比关于处理这类事情的其他人。

我应该完全相信什么?有很多.NET开发人员使用那个构造函数而不是正则表达式,因为它比大多数你在互联网上找到的正则表达式都要准确,除了它不需要花费大量的时间和精力才能正确使用。我已经看到它在我个人试过的几乎所有其他案例中都有效。

有效格式为somestring@somestring.吗?

1 个答案:

答案 0 :(得分:2)

有效的电子邮件地址比您想象的要复杂得多。阅读RFC 2822以了解它有多复杂。以及RFC 2821RFC 822

编辑:RFC 5322已废弃2822

这些都是有效的电子邮件地址!

"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/department=shipping@example.com
\$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com

我也经常使用email+whatever@gmail.com来分析我的电子邮件。它有助于过滤我的电子邮件(并找出垃圾邮件的来源)。见RFC 5233

更多关于Phil Haack's blog