0

我正在尝试检查电子邮件地址是否存在。我可以@gmail.com根据 SMTP 服务器验证地址gmail-smtp-in.l.google.com,但我不知道如何获取其他域的 SMTP 服务器以进行检查。请告知如何获取域的 SMTP 服务器,或者另一种可靠地检查电子邮件地址是否存在的方法。

这是我检查@gmail.com地址的代码:

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 HELO to SMTP Server and get Response */
dataBuffer = BytesFromString("HELO AnkurHere" + CRLF);
netStream.Write(dataBuffer, 0, dataBuffer.Length);
ResponseString = reader.ReadLine();

dataBuffer = BytesFromString("MAIL FROM:<abc@gmail.com>" + 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)
   {
       label1.Text = "Mai Address Does not Exist !";
       label2.Text = "Original Error from Smtp Server" + ResponseString;
   }

/* QUITE CONNECTION */
dataBuffer = BytesFromString("QUITE" + CRLF);
netStream.Write(dataBuffer, 0, dataBuffer.Length);
tClient.Close();
4

1 回答 1

0

对于您正在使用的方法,您需要对域的 MX 记录进行 DNS 查找。据我所知,.NET 中没有内置的方法可以做到这一点,所以你要么必须找到一个组件,要么看看这个问题

但是,您需要注意的是,此方法不会给出 100% 准确的结果,并且可能会产生误报 - 某些域会在将任何地址的邮件放入“全部接收”邮箱、静默删除或发送退回邮件之前接受任何地址的邮件信息。接受然后弹跳不是最佳实践,但有时仍会发生。

于 2012-09-17T08:28:38.937 回答