C# 如何验证是否确实存在来自DNS的电子邮件
我正在创建一个web服务来验证用户输入的电子邮件是否存在。这是web方法。问题是当电子邮件错误或正确时,该方法总是返回trueC# 如何验证是否确实存在来自DNS的电子邮件,c#,asp.net,dns,smtp,email-validation,C#,Asp.net,Dns,Smtp,Email Validation,我正在创建一个web服务来验证用户输入的电子邮件是否存在。这是web方法。问题是当电子邮件错误或正确时,该方法总是返回true [WebMethod(Description = "This method is used to validate email")] public bool ValidateEmail(string email) { bool isValid = false; try { string[] host = (email.Split
[WebMethod(Description = "This method is used to validate email")]
public bool ValidateEmail(string email)
{
bool isValid = false;
try
{
string[] host = (email.Split('@'));
string hostname = host[1];
IPHostEntry IPhost = Dns.GetHostByName(hostname);
IPEndPoint endPt = new IPEndPoint(IPhost.AddressList[0], 25);
Socket soc = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
soc.Connect(endPt); //open connection to host
soc.Close();
isValid = true;
}
catch (Exception ex)
{
//ex.Message.ToString();
isValid = false;
}
return isValid = true;
}
Dns.GetHostByName()
查询与为域提供服务的SMTP服务器的地址完全无关的域的Dns A记录-该信息在MX记录中-您解析的IP对于电子邮件来说毫无价值。验证电子邮件的正确方法是向其发送带有确认链接的电子邮件。