电子邮件地址验证显示错误地址为正确

时间:2015-07-31 14:44:50

标签: c# regex email smtpclient verification

我对(Visual)C#中的电子邮件验证有疑问。

我在网上搜索并发现了几种方法。例如。这里:

奇怪的是,他们似乎都让“ex.as @ asd,com”等电子邮件通过(注意逗号而不是点)。

但是,如果我尝试通过SmtpClient对象发送电子邮件,我会收到异常,因为给定的电子邮件地址格式错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果您在下面尝试,它将以您可以验证地址的方式抛出异常。

try 
{
    address = new MailAddress("ex.as@asd,com", "Email validation").Address;
} 
catch(FormatException) {
    //Invalid email address
}

MailAdress.Address属性在您尝试获取时抛出FormatException。

答案 1 :(得分:0)

第一个链接的正则表达式对我有用。您应该将所有\替换为\\和“to”。

我试过这段代码:

var validateEmailRegex = new Regex("(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])");
var isValidEmail = validateEmailRegex.Match("ex.as@asd,com").Success;

我得到了isValidEmail == false。