Ошибка при отправке почты. Невозможно записать данные в транспортное соединение - PullRequest
7 голосов
/ 26 апреля 2011

Я использую SMTP-сервер Gmail для отправки почты из VB.Net. Хотя некоторые электронные письма отправляются нормально, для других он возвращает следующую ошибку:

Ошибка при отправке почты. Невозможно записать данные в транспортное соединение System.Net.Sockets.SocketException: установленное соединение было прервано программным обеспечением на хост-компьютере

Ответы [ 2 ]

19 голосов
/ 03 августа 2011

Недавно я сталкивался с такой же проблемой, когда SmtpClient.SendMail(MailMessage) неоднократно использовался с электронным письмом с вложением 350 КБ. Каждое 33-е сообщение будет содержать ошибку, которую вы дали.

Оказывается, наш общий компонент, который инкапсулировал функциональность SendMail, не вызывал Dispose() в классе SmtpClient, когда сообщение заканчивало отправку.

Добавление client.Dispose() к экземпляру SmtpClient сразу решило проблему, и теперь сообщения выходят без проблем - их сотни (и да, они являются законными уведомлениями о продуктах для наших клиентов, а не спамом);)

4 голосов
/ 26 апреля 2011

Из того, что я прочитал в сети, код ошибки Winsock, связанный с этим исключением: WSAECONNABORTED .

Подробнее об этом можно прочитать по этому адресу для объяснения: WSAECONNABORTED

По сути, это означает, что сервер закрыл соединение, когда ваше приложение пыталось отправить большое электронное письмо.

Возможно, вам следует проверить документацию Gmail, чтобы убедиться, что оно имеетнекоторые ограничения на размер сообщения или общее количество отправленных сообщений.Похоже, вы загружаете слишком много данных в сокет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...