Не удается отправить электронную почту через обмен: существующее соединение было принудительно закрыто удаленным хостом - PullRequest
2 голосов
/ 21 июля 2009

Я только что заметил, что некоторые операции с электронной почтой в моем коде терпели неудачу, и я пытаюсь исправить это, однако я получаю следующую ошибку:

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);

У кого-нибудь есть идеи, что может происходить? Наш администратор сервера обмена говорит, что она ничего не видит в журнале.

Кроме того, это не удивительно, но то же самое происходит, когда я пытаюсь отправить сообщение с powershell.

Ответы [ 2 ]

3 голосов
/ 22 июля 2009

Понял!

По сути, кажется, что эта ошибка (ErrorCode 10054) возникает, когда вы успешно подключаетесь к серверу, но затем просите его сделать что-то, чего он не оборудован.

В моем случае вот что произошло:

  • Я использовал для отправки почты через наш фронтальный почтовый сервер mail.mycompany.com
  • Это не адрес сервера обмена, а адрес, на который вы указываете браузер для доступа к outlook онлайн.
  • Раньше это работало нормально, поскольку не веб-запросы на этот адрес направлялись на сервер обмена. В какой-то момент эта политика была изменена - в нашем случае, потому что управление спамом было передано AT & T. Конечно, мне не сообщили об этом.
  • Поскольку на этом сайте действительно был запущен сервер, он позволил бы мне подключиться к нему, но затем немедленно сбросить соединение (или, возможно, даже не позволить ему полностью открыться)
  • Установка правильного имени хоста устранила проблему.
1 голос
/ 21 июля 2009

Обычно, когда я вижу, что это конфигурация на сервере Exchange. В нашей среде наши сетевые администраторы должны явно разрешить компьютерам использовать сервер Exchange в качестве ретранслятора. Если машина, на которой работает мой код, явно не добавлена ​​на сервер, я получаю это сообщение. Надеюсь, это поможет.

...