繁体   English   中英

发送邮件在服务器上有效,但在我的本地计算机上无效

[英]sending mail works on server but not on my local machine

我在下面有以下代码(我被卡在xxx中以不公开真实姓名)。 当我上传到服务器时,此代码可以正常工作,并且可以完美发送电子邮件。

        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(fromEmailAddress_);
        msg.To.Add(new MailAddress(toEmailAddress_));

        msg.Subject = subject_;
        msg.Body = body_;
        msg.IsBodyHtml = true;
        msg.Priority = MailPriority.High;

        NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("xxx@xxxx.org", "password");
        try
        {
            SmtpClient c = new SmtpClient("mail.xxx.org");
            c.UseDefaultCredentials = false;
            c.Credentials = basicAuthenticationInfo;
            c.Send(msg);
        }
        catch (Exception ex)
        {
            throw ex;
            Console.Write(ex.Message.ToString());
        }

但是,当我在Visual Studio中的计算机上进行本地测试时,出现错误:

[SocketException(0x274d): 无法建立连接,因为目标计算机主动拒绝了它 66.226.21.251:25] System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress)+239 System.Net.Sockets.Socket。 InternalConnect(Endpoint remoteEP)+35 System.Net.ServicePoint.ConnectSocketInternal(布尔值connectFailure,套接字s4,套接字s6,套接字和套接字,IP地址和地址,ConnectSocketState状态,IAsyncResult asyncResult,Int32超时,异常和异常)+224

[WebException: 无法连接到远程服务器 ] System.Net.ServicePoint.GetConnection(PooledStream PooledStream,对象所有者,布尔异步,IPAddress&地址,Socket&abortSocket,Socket&abortSocket6,Int32超时)+5420699 System.Net.PooledStream.Activate(对象owningObject,布尔异步,Int32超时,GeneralAsyncDelegate asyncCallback)+202 System.Net.PooledStream.Activate(Object owningObject,GeneralAsyncDelegate asyncCallback)+21 System.Net.ConnectionPool.GetConnection(Object owningObject,GeneralAsyncDelegate asyncCallback,Int32 creationTimeout)+332系统.Net.Mail.SmtpConnection.GetConnection(字符串主机,Int32端口)+160 System.Net.Mail.SmtpTransport.GetConnection(字符串主机,Int32端口)+159

关于为什么这行不通的任何建议

要执行此操作,我要做的第一件事是查看目标计算机是否确实如错误消息所示实际上拒绝了连接。 我可以从此处连接到该IP地址上的端口25,因此您的错误消息可能会引起误解。 这些都是导致连接失败的可能原因:

  • 您的代码中存在一些问题
  • 您正在使用的库中存在一些问题
  • 您有本地防火墙,可防止来自陌生程序的出站邮件
  • 您的ISP不允许除与其自己的服务器外的出站SMTP连接
  • 一些中间网络正在阻止事物
  • 邮件服务器的ISP阻止了来自网络的SMTP连接
  • 邮件服务器确实拒绝了您,可能是因为您在阻止列表中

要获取更多详细信息,请下载并安装Wireshark 就像网络的调试器一样。 在系统和目标网络之间开始捕获,然后运行代码。 解释捕获的数据包需要一些经验,因此,如果遇到困难,请随时在此处发布更多数据。

中继限制最有可能阻止您从允许的一组IP之外发送邮件。 如果在Web /应用程序服务器上配置了SMTP服务器,则可能已将其设置为仅允许通过127.0.0.1发送邮件。

您可以通过IIS管理器配置本地SMTP服务器。 如果沿着这条路径走,请确保在本地计算机上打开了端口25。 通常,防病毒类型的软件会阻止/监视此端口,并会干扰电子邮件的传递。

我认为您没有在代码中使用端口号。 使用这些行,然后邮件也应放在本地。

    smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
    smtp.Timeout = 60000;
    smtp.Port = 25;

这正在我的系统上工作。 我希望它也可以在您的本地系统上运行。

该提供程序可能已将其邮件服务器防火墙隔离,以使其仅接受来自其托管环境的邮件。

在本地测试时,将其更改为使用本地邮件服务器。

您要求提供XP Mail Server。 试试hMailServer

看看您的杀毒软件是否会发疯,我已经与运行mcafee的人见过几次此问题。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM