Windows Server 2008:打开smtp端口是否不足以发送邮件?

时间:2011-05-30 10:45:26

标签: c# windows email firewall

我在C#中编写了一个发送邮件通知的简单程序。它在Windows 7上运行良好,但在Server 2008上失败。

我已经读过一些关于它的内容,但我看不出是什么阻止我发送邮件。我打开了端口587(Gmail的SSL端口)传出和进入(TCP)但仍然没有运气。我甚至为整个程序打开了防火墙。我应该注意Windows Server中的特定设置吗?

*编辑 - 除了Windows之外没有其他防火墙。

堆栈追踪:

System.Net.Mail.SmtpException: Failure sending mail.
---> System.Net.WebException: Unable to connect to the remote server
---> System.Net.Sockets.SocketException: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full 74.125..:587
     at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
     at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- End of inner exception stack trace ---
编辑:我找到了答案:问题与Windows服务器无关。这是因为它无法连接到我的数据库。傻我。早些时候我无法连接到数据库时出现连接错误,但现在我得到的只是奇怪的错误消息;其中一个发布在这里。

感谢所有人的帮助!很高兴得到这么快的帮助。

3 个答案:

答案 0 :(得分:2)

线索是例外,我怀疑与你的防火墙有什么关系:

System.Net.Sockets.SocketException: An operation on a socket could not be performed 
because the system lacked sufficient buffer space or because a queue was full

有一篇Microsoft KB文章可能值得一试,它适用于Windows 2003,但我会对它进行全面调查:

  

BUG: You receive a "The operation has timed-out" error message when you access a Web service or when you use the IPAddress class

看起来这个问题也可以在Windows 2008下发生,根据这篇文章,虽然是关于Windows EBS,但根本原因似乎是相同的(向右滚动到页面底部):

  

EBS Console crashes every 5-7 days

基本上,Windows可能会耗尽协议绑定。他们描述了一个名为enum.exe的工具,它将确定您机器上存在的协议绑定的数量。

这里有一篇关于Stack Overflow的相关文章:

  

Why am I getting this SocketException in my C# service?

答案 1 :(得分:1)

提供的异常信息是否有可能为您提供有关错误的线索?那就是:

  

套接字上的操作不能   因为系统缺乏而执行   足够的缓冲空间或因为a   队列满了74.125 ..:587

请参阅http://blogs.msdn.com/b/sql_protocols/archive/2009/03/09/understanding-the-error-an-operation-on-a-socket-could-not-be-performed-because-the-system-lacked-sufficient-buffer-space-or-because-a-queue-was-full.aspx

在.NET中,很可能这是因为没有丢弃SmtpClient

答案 2 :(得分:0)

首先尝试排查问题,因为问题可能出在其他地方:-)

  1. 尝试禁用防火墙并试一试。它可能与Windows 2008阻止你的方式上的防火墙有所不同
  2. 尝试运行您尝试联系的telnet yourSmtpServer 587