首页 文章

如何解决私有域上批量邮件的套接字连接错误?

提问于
浏览
-1

{“连接尝试失败,因为连接方在一段时间后没有正确响应,或者 Build 的连接失败,因为连接的主机无法响应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;
        }

1 回答

  • 1

    除非您知道SMTP服务器接受端口25上未经身份验证的连接,否则您的代码是非常有限的,但应该适用于私有SMTP服务器 . 尽管如此,即使您托管自己的SMTP服务器,但尝试在可靠的Internet地址上发送电子邮件,收件人的SMTP服务器也可能拒绝传入的电子邮件,因为您的SMTP服务器被视为不受信任 .

    请查看您尝试定位的SMTP服务器的以下配置:

    • SMTP服务器是否仅接受明确注册的客户端IP地址?即使在私人领域,情况也是如此 .

    • 允许25的SMTP?或者我需要使用SMTP SSL / SMTP TLS吗?

    • 是SMTP服务器允许匿名连接?在互联网上避免垃圾邮件不再是这种情况 . 即使在私有域上,也可能需要身份验证 .

    • 如果您使用自己的SMTP服务器但尝试将邮件传递到公共电子邮件地址,您的服务器是否正确设置为通过Internet发送电子邮件? (MX,反向DNS,SPF ......)

    SMTP服务器可能有很多理由拒绝连接 . 但是,如果这是在私有域上,请检查SMTP服务器配置或询问SMTP服务器管理员所需的参数 .

相关问题