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

本文关键字:地址 电子邮件地址 显示 错误 验证 | 更新日期: 2023-09-27 18:05:57

我有一个关于(Visual) c#中电子邮件验证的问题。

我在网上搜索了一下,找到了几种这样做的方法。如:

  • c# Email地址验证
  • c#代码验证电子邮件地址

奇怪的是,他们似乎都让"ex.as@asd,com"这样的邮件通过了(注意逗号而不是点)。

然而,如果我尝试通过SmtpClient对象发送电子邮件,我得到一个异常,因为给定的电子邮件地址有错误的格式。

任何想法?

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

Regex从第一个链接是为我工作。你应该把所有的'替换为''和" 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

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

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

MailAdress。

地址属性在试图获取它时会抛出FormatException。