{"连接尝试失败,因为连接方没有 在一段时间后正确回应,或建立连接 失败,因为已连接的主机无法响应72.167.238.32:25"}
public bool IsExists_SMTPMethod(string email)[socket connection error screenshot][1]
{
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;
}
答案 0 :(得分:1)
除非您知道SMTP服务器接受端口25上未经身份验证的连接,否则您的代码非常有限,但应该适用于私有SMTP服务器。尽管如此,即使您托管自己的SMTP服务器,但尝试在可靠的Internet地址上发送电子邮件,收件人的SMTP服务器也可能拒绝传入的电子邮件,因为您的SMTP服务器被视为不受信任。
请查看您尝试定位的SMTP服务器的以下配置:
SMTP服务器可能有很多理由拒绝连接。但是,如果这是在私有域上,请检查SMTP服务器配置或询问SMTP服务器管理员所需的参数。