【发布时间】:2013-03-20 22:03:33
【问题描述】:
我正在尝试测试我的hotmail帐户是否存在,但以下代码对我没有帮助。
public bool IsExists_SMTPMethod(string email)
{
string domain = email.Substring(email.IndexOf("@") + 1);
var servers = _commander.GetMXServers(domain);
Socket socket = null;
foreach (MXServer mxserver in servers)
{
IPHostEntry ipHost = Dns.Resolve(mxserver.MailExchanger);
IPEndPoint endPoint = new IPEndPoint(ipHost.AddressList[0], 25);
socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(endPoint);
if (!CheckResponse(socket, ResponseEnum.ConnectSuccess))
{
socket.Close();
}
else
{
// If connected, send SMTP commands
{
SendData(socket, string.Format("HELO {0}\r\n", "machinename"));
if (!CheckResponse(socket, ResponseEnum.GenericSuccess))
{
socket.Close();
continue;
}
SendData(socket, string.Format("MAIL FROM: <{0}>\r\n", "from@domain.com"));
CheckResponse(socket, ResponseEnum.GenericSuccess);
SendData(socket, string.Format("RCPT TO: <{0}>\r\n", email));
bool result = CheckResponse(socket, ResponseEnum.GenericSuccess);
if (!result)
{
socket.Close();
continue;
}
else
return true;
}
}
}
return false;
}
【问题讨论】:
-
没帮你怎么办?你有没有得到错误,如果有,是哪个?您尝试过对此代码进行任何更改吗?
-
许多邮件服务器使用它来防御垃圾邮件。他们不会在响应 rcpt 时返回错误,即使是接收者。不存在。
-
好的。对于每个 hotmail 帐户,它都会返回 false
-
最好向帐户发送验证电子邮件并让用户单击其中的链接进行订阅
-
是的,你是对的,但我有 100 万封电子邮件,我无法发送大量电子邮件:(
标签: c# asp.net network-programming websocket hotmail