2009-07-21 80 views
2

我刚刚注意到我的代码中的一些电子邮件操作失败,正在尝试修复它,但是我不断收到以下错误:通过交换无法收发电子邮件:现有连接被远程主机强行关闭

System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. 
---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 
    at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) 
    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
    --- End of inner exception stack trace --- 
    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
    at System.Net.DelegatedStream.Read(Byte[] buffer, Int32 offset, Int32 count) 
    at System.Net.BufferedReadStream.Read(Byte[] buffer, Int32 offset, Int32 count) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller) 
    at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) 
    at System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port) 
    at System.Net.Mail.SmtpClient.GetConnection() 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    --- End of inner exception stack trace --- 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 

我的代码是相当简单:

MailMessage mail = new MailMessage(); 
mail.To.Add(email_to); 
mail.From = new MailAddress(email_from); 
mail.Subject = email_subject; 
mail.Body = email_body; 


var client = new SmtpClient(smtp_server_url); 
client.Credentials = new NetworkCredential(username, password, domain); 
client.Timeout = 30000; 
client.Send(mail); 

没有人有任何想法可能是怎么回事?我们的Exchange服务器管理员说她看不到日志中的任何内容。

此外,这并不是一个惊喜,但同样的事情发生时,我试图从PowerShell发送消息。

回答

1

通常当我看到它是Exchange服务器上的配置时。在我们的环境中,我们的网络管理员必须明确允许机器使用Exchange服务器作为中继。如果我的代码运行的机器没有明确添加到服务器,我收到此消息。希望有帮助。

+0

谢谢,但那不是,我可以从Outlook发送就好了。它只与从.NET代码发送,我有一个问题 – 2009-07-21 20:01:37

3

Got it!

从本质上看,这个错误(ErrorCode 10054)发生在成功连接到服务器时发生,但然后要求它做一些没有配备的事情。

在这里我的情况又是如何呢:

  • 我曾经通过我们的前置邮件服务器mail.mycompany.com发送邮件
  • 这不是Exchange服务器的地址,虽然,它是您的浏览器在线访问Outlook的地址。
  • 此功能很好,因为该地址的非Web请求被路由到交换服务器。在某种程度上,这项政策发生了变化 - 在我们的案例中,因为垃圾邮件管理被交给了AT & T.当然,我没有得到任何通知。
  • 由于确实有一台服务器在该站点运行,它会让我连接到它,但然后立即断开连接(或可能甚至不允许它一路打开)
  • 设置正确的主机名修复问题。
相关问题