有没有办法确保提供的电子邮件有效?

时间:2014-10-11 09:04:16

标签: asp.net email

我想在用户注册时发送确认电子邮件,但首先我要确保此电子邮件真实有效,有没有办法检查这个?
我的意思是说我想注册这封电子邮件:blah@blah.com,在服务器端我想发送电子邮件地址给API或任何返回该电子邮件正在工作的东西,然后我发送确认之一。
是否可以这样做?
感谢

2 个答案:

答案 0 :(得分:3)

这正是你想要的: End-to-end Email Address Verification for Applications

本教程由三部分组成:

1)验证 一些代码:

public static bool isEmail(string inputEmail)
{
   inputEmail  = NulltoString(inputEmail);
   string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
         @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + 
         @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
   Regex re = new Regex(strRegex);
   if (re.IsMatch(inputEmail))
    return (true);
   else
    return (false);
} 

2)通过SMTP网络连接进行验证

string[] host = (address.Split('@'));
string hostname = host[1];

IPHostEntry IPhst = Dns.Resolve(hostname);
IPEndPoint endPt = new IPEndPoint(IPhst.AddressList[0], 25);
Socket s= new Socket(endPt.AddressFamily, 
        SocketType.Stream,ProtocolType.Tcp);
s.Connect(endPt); 

3)通过SMTP握手验证

...更多信息here

答案 1 :(得分:1)

首先,您可以使用正则表达式进行电子邮件验证。像这样。

public const string MatchEmailPattern = 
            @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
     + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?
                [0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
     + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?
                [0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
     + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";

  /// <summary>
  /// Checks whether the given Email-Parameter is a valid E-Mail address.
  /// </summary>
  /// <param name="email">Parameter-string that contains an E-Mail address.</param>
  /// <returns>True, when Parameter-string is not null and 
  /// contains a valid E-Mail address;
  /// otherwise false.</returns>
  public static bool IsEmail(string email)
  {
     if (email != null) return Regex.IsMatch(email, MatchEmailPattern);
     else return false;
  }

其次,您可以使用第三方API来验证电子邮件(我认为您正在寻找此信息)。 API的一些有用链接 -