我想要一个函数来测试一个字符串是一个格式化的电子邮件地址。
什么是内置的.NET框架来做这个?
这工作:
Function IsValidEmailFormat(ByVal s As String) As Boolean Try Dim a As New System.Net.Mail.MailAddress(s) Catch Return False End Try Return True End Function
但是,有更优雅的方式吗?
不要打扰自己的验证。 .NET 4.0通过
原文链接:https://www.f2er.com/vb/256237.htmlMailAddress
类大大提高了验证。只需使用MailAddress address = new MailAddress(输入),如果它抛出,它是无效的。如果有任何可能的解释您的输入作为符合RFC 2822的电子邮件地址规范,它将解析它。上面的正则表达式,即使是MSDN文章,都是错误的,因为它们没有考虑显示名称,引用的本地部分,域的字面值,本地部分的正确的点原子规范,电子邮件地址可以在尖括号中,显示名称的多个带引号的字符串值,转义字符,显示名称中的unicode,注释和最大有效邮件地址长度。我花了三个星期在.NET 4.0 for System.Net.Mail中重写了邮件地址解析器,并相信我,比使用一些正则表达式更难,因为有很多边缘情况。 .NET 4.0 beta 2中的MailAddress类将具有此改进的功能。
还有一件事,你唯一可以验证的是邮件地址的格式。您无法验证电子邮件地址实际上是否有效的接收电子邮件,而不发送电子邮件到该地址,并查看服务器是否接受它的交付。这是不可能的,虽然有SMTP命令,您可以给邮件服务器尝试验证它,很多次,这些将被禁用或将返回不正确的结果,因为这是垃圾邮件发件人查找电子邮件地址的常见方式。