我们可以在asp.net中使用正则表达式验证电子邮件地址.现在,我们如何才能找到真正存在的电子邮件地址?
例如,farzaneh@yahoo.com
具有正确的电子邮件格式但不存在.
此代码仅适用于gmail帐户:
protected void Button1_Click(object sender, EventArgs e) { TcpClient tClient = new TcpClient("gmail-smtp-in.l.google.com", 25); string CRLF = "\r\n"; byte[] dataBuffer; string ResponseString; NetworkStream netStream = tClient.GetStream(); StreamReader reader = new StreamReader(netStream); ResponseString = reader.ReadLine(); /* Perform HELLO to SMTP Server and get Response */ dataBuffer = BytesFromString("HELO " + CRLF); netStream.Write(dataBuffer, 0, dataBuffer.Length); ResponseString = reader.ReadLine(); dataBuffer = BytesFromString("MAIL FROM:" + CRLF); netStream.Write(dataBuffer, 0, dataBuffer.Length); ResponseString = reader.ReadLine(); /* Read Response of the RCPT TO Message to know from google if it exist or not */ dataBuffer = BytesFromString("RCPT TO:<" + TextBox1.Text.Trim() + ">" + CRLF); netStream.Write(dataBuffer, 0, dataBuffer.Length); ResponseString = reader.ReadLine(); if (GetResponseCode(ResponseString) == 550) { Response.Write("Mai Address Does not Exist !"); Response.Write("Original Error from Smtp Server :" + ResponseString); } /* QUITE CONNECTION */ dataBuffer = BytesFromString("QUITE" + CRLF); netStream.Write(dataBuffer, 0, dataBuffer.Length); tClient.Close(); } private byte[] BytesFromString(string str) { return Encoding.ASCII.GetBytes(str); } private int GetResponseCode(string ResponseString) { return int.Parse(ResponseString.Substring(0, 3)); }
有什么方法可以知道吗?
谢谢.
简短的回答是:如果没有正在验证地址的用户的帮助,您无法验证电子邮件地址是否存在.
实现此目的的事实上的标准是发送验证电子邮件,该电子邮件包含生成的一次性链接,供用户遵循以确认收到发送到该地址的电子邮件.