【问题标题】:ASP.NET - SmtpClient - Unable to connect to the remote serverASP.NET - SmtpClient - 无法连接到远程服务器
【发布时间】:2010-07-13 14:40:57
【问题描述】:

我正在开展一个项目,其中一项要求是重新编写 ASP.NET 应用程序。旧的 ASP.NET 应用程序基于 .NET Framework 1.1。新的 ASP.NET 应用程序基于 .NET Framework 3.5。

旧 Web 应用程序的功能之一是能够发送电子邮件。旧代码使用 System.Web.Mail.SmtpMail 类,而新 Web 应用程序使用 System.Net.Mail.SmtpClient 类。

在我们的开发服务器上进行测试时,一切正常。但是,我们有两个测试版客户端正在测试我们的软件,它们都在新的 Web 应用程序中发送电子邮件时遇到了问题。

具体异常如下:

无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 无法建立连接,因为目标机器主动拒绝了它

新旧 ASP.NET 应用程序都在同一台服务器上 (Windows Server 2003)。他们都使用相同的 Exchange 邮件服务器。为什么旧的 ASP.NET 应用程序可以成功发送电子邮件,而新应用程序却不能?

我查看了旧代码,它没有使用任何形式的身份验证,它只是指定了发件人的电子邮件地址、收件人的电子邮件地址、主题、正文和服务器,然后发送了消息。我在新代码中做了同样的事情,唯一的区别是我使用了 SmtpClient 类。

以下是来自新 ASP.NET 应用程序的代码 sn-p:

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(messageTo);
mail.From = new MailAddress(messageFrom);
mail.Subject = messageSubject;
mail.Body = messageBody;

SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mail);

【问题讨论】:

  • Exchange 日志中是否有任何内容显示它拒绝连接?
  • 我无权访问它们,我认为测试版客户端也无法访问它们。同样,这对我们来说效果很好。这是非常基本的功能。
  • 如何指定服务器?在 SmptClient 的构造函数中,还是在 web.config 中?你能发布一些代码吗?
  • 我刚刚修改了原始帖子以包含我在新的 ASP.NET 应用程序中使用的代码。
  • 请注意,client.Host 必须只有服务器的名称或其 IP。端口必须在 Port 属性中设置。

标签: c# asp.net


【解决方案1】:

"Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine主动拒绝它"错误通常意味着TCP您尝试连接的端口没有任何服务正在侦听,即它已关闭并且无法建立 tcp 连接,更不用说 SMTP 连接了。

您的交换日志中不会显示任何内容,因为它在网络堆栈中的较低级别失败,您的邮件服务器甚至不会看到连接尝试。

您也可以发布 .net1.1 代码吗?最可能的问题是服务器正在侦听非标准端口,而您没有在新代码中指定该端口。请注意,您需要使用Port 属性设置端口,不能简单地将其附加到Host 属性,例如

错误:

client.Host = "mail.someco.com:10000";

正确:

client.Host = "mail.someco.com";
client.Port = 10000;

【讨论】:

    【解决方案2】:

    如果您正在使用任何杀毒软件,请检查它的日志,看看是否是因为杀毒软件。当 McAffee 阻止我的邮件时,我遇到了同样的问题(有一个安全策略 - 防止大量邮件蠕虫发送邮件)。编辑此策略并将您的应用程序添加到例外列表中。就我而言,这解决了问题。请检查它是否适合您。

    【讨论】:

      【解决方案3】:

      您确定 System.Web.Mail.SmtpMail 的 SmtpServer 属性是在旧代码中设置的吗?可以在不设置此属性的情况下使用它,然后它使用本地服务器的 SMTP 服务。 System.Web.Mail.SmtpMail.SmtpServer

      【讨论】:

        【解决方案4】:

        你检查过 web.config 文件的 smtp 主机配置吗?您应该将配置部分复制到您的应用中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-24
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多