通过交换着电子邮件:一个现有的连接被强行关闭远程主机(Cant emails through exc

2019-07-30 13:19发布

我只注意到一些在我的代码的电子邮件操作已经失败,我试图修复它,但我不断收到以下错误:

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中发送消息的同样的事情发生。

Answer 1:

得到它了!

本质上,它看来,当您连接到服务器成功,但随后要求它做一些事情,它不具备这样做的错误(错误代码10054)发生。

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

  • 我曾经通过我们的前置邮件服务器mail.mycompany.com发送邮件
  • 这不是Exchange服务器的地址,虽然,这是你的浏览器指向访问Outlook在线的地址。
  • 这种精细曾任职因为该地址的非Web请求路由到Exchange服务器。 在某些时候,这一政策已被改变 - 在我们的例子,因为垃圾邮件管理被移交给AT&T。 当然,我没有被告知任何此类。
  • 因为确实有在该网站运行的服务器,将让我连接到它,但随后立即断开连接(或者甚至可能不允许它一路开)
  • 设置正确的主机名固定的问题。


Answer 2:

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



文章来源: Cant emails through exchange: An existing connection was forcibly closed by the remote host