温馨提示:本文翻译自stackoverflow.com,查看原文请点击:vb.net - How do I validate email address formatting with the .NET Framework?
.net email validation vb.net

vb.net - 如何使用.NET Framework验证电子邮件地址格式?

发布于 2020-03-29 21:58:48

我想要一个函数来测试字符串是否像电子邮件地址一样格式化。

.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

但是,有没有更优雅的方式?

查看更多

提问者
Zack Peterson
被浏览
144
83.9k 2011-09-09 04:26

不要为自己的验证而烦恼。.NET 4.0通过MailAddress该类大大改善了验证只需使用MailAddress address = new MailAddress(input)如果抛出,则无效。如果您的输入有任何可能的解释为符合RFC 2822的电子邮件地址规范,它将对此进行解析。上面的正则表达式,甚至是MSDN文章中的正则表达式都是错误的,因为它们没有考虑显示名称,带引号的本地部分,域的域文字值,本地部分的正确点原子规范,邮件地址可以放在尖括号中,用于显示名称的多个带引号的字符串值,转义字符,显示名称中的unicode,注释以及最大有效邮件地址长度。我花了三周的时间为System.Net.Mail在.NET 4.0中重新编写了邮件地址解析器,并相信我,这比仅提供一些正则表达式要困难得多,因为存在很多边缘情况。MailAddress .NET 4.0 beta 2中的类将具有此改进的功能。

还有一件事,您唯一可以验证的是邮件地址的格式。如果不向该地址发送电子邮件并查看服务器是否接受该电子邮件地址,则无法验证该电子邮件地址实际上对于接收电子邮件有效。这是不可能的,尽管您可以向邮件服务器提供SMTP命令以尝试对其进行验证,但很多时候这些命令将被禁用或返回错误的结果,因为这是垃圾邮件发送者查找电子邮件地址的常用方法。