在asp.net中是否有验证电子邮件地址的功能?

Ant*_*ony 3 asp.net email

我注意到,如果您尝试向无效地址发送电子邮件,则会引发异常:

MailAddress To=new MailAddress("invalidemailaddress","recipientname");
Run Code Online (Sandbox Code Playgroud)

抛出:

 "The specified string is not in the form required for an e-mail address"
Run Code Online (Sandbox Code Playgroud)

这意味着必须有一个在MailAddress中执行的.Net函数来检查电子邮件地址是否有效.有没有办法直接调用这个'验证'功能?这样我就不需要创建自己的IsValid函数了.

小智 9

不,但你可以做一个:

public bool ValidateEmailAddress (string email)
{
   if (string.IsNullOrEmpty (email)) return false;

    try
    {
        MailAddress to = new MailAddress (email);

        return true;
    }
    catch (WhateverException e)
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

回答评论.我知道这种技术被认为是一种坏的,有理由的.我想指出的是,这种方法将使您100%保证.NET邮件库最近能够发送到经过验证的地址.Regexes(其中有很多)的问题在于每个都按照规范解决技术上正确的地址集中的一个特定子集.一个会更窄,另一个会比.NET内部定义的子集更宽.如果您要使用Regex验证,那么在第一种情况下,您的Regex会切断部分有效地址(如.NET所示),在后一种情况下,验证将通过.NET邮件库赢得的地址.根据自己的内部验证,视为无效.确保有效集100%匹配.NET集(或您将使用的任何其他第三方库)的一种真正方法是尝试/捕获方法,除非当然第三方库提供了一些验证方法已经.

  • 是的,这很糟糕,我知道.但它很简单,而且很有效. (2认同)
  • 其中一件你不应该做的事情,但它在实践中从未引起任何问题. (2认同)