在验证.NET应用程序中的电子邮件地址时,建议只使用MailAddress(String)
构造函数,如果参数的格式不正确,则应该抛出异常地址。有一些关于什么有和没有资格作为正确的电子邮件地址的神话,甚至谷歌也被要求提供一个正则表达式,除其他外,不正当地取消了带有刻度标记的地址。
现在说,我注意到一个实例,其中格式somestring@somestring.
的字符串没有被构造函数无效,尽管没有任何东西在点的右边。我确实认为所有不使用IP地址的内容都需要一个点和右边的内容,但supposedly,admin@mailserver1
格式完全有效。但它仍然不是完全相同的格式,所以我运行了几个测试here:
o'reilly@somestring.com - valid
somestring@somestring. - invalid
并且this source听起来像somedomain
和somedomain.
都是合法的域名,并且它们实际上是彼此等同的,尽管它也说某些程序比关于处理这类事情的其他人。
我应该完全相信什么?有很多.NET开发人员使用那个构造函数而不是正则表达式,因为它比大多数你在互联网上找到的正则表达式都要准确,除了它不需要花费大量的时间和精力才能正确使用。我已经看到它在我个人试过的几乎所有其他案例中都有效。
有效格式为somestring@somestring.
吗?
答案 0 :(得分:2)
有效的电子邮件地址比您想象的要复杂得多。阅读RFC 2822以了解它有多复杂。以及RFC 2821和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