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

Is "somestring@somestring." a valid e-mail address?

在 .NET 应用程序中验证电子邮件地址时,建议只使用 MailAddress(String) 构造函数,如果参数的格式不正确,它会抛出异常-邮件地址。关于什么是正确的电子邮件地址,什么是正确的电子邮件地址存在一些误解,甚至 Google 也因为提供了一个正则表达式而被点名,该正则表达式不正确地取消了带有刻度线的地址的资格。

话虽这么说,但我注意到一个实例,其中格式 somestring@somestring. 的字符串没有被构造函数无效,尽管点右边没有任何内容。我确实认为所有不使用 IP 地址的东西都需要一个点和它右边的东西,但是 supposedly, admin@mailserver1 is in perfectly valid format. It's still not quite in the same format though, so I ran a couple of tests here:

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

this source听起来像是somedomainsomedomain.都是合法的域名,而且它们实际上是等价的,尽管它也说有些程序是比其他人更善于处理这样的事情。

我到底应该相信什么?有很多 .NET 开发人员使用该构造函数而不是正则表达式,因为它假定比您在 Internet 上可以找到的大多数正则表达式更准确,此外它不需要花费大量时间和精力来获得正确的结果.我已经看到它在我个人尝试过的几乎所有其他情况下都有效。

somestring@somestring. 是有效格式吗?

有效的电子邮件地址比您想象的要复杂得多。阅读 RFC 2822 to get an idea of how complicated it is. As well as RFC 2821 and RFC 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