2

У меня есть личное приложение для отправки электронной почты (Windows), которое отправляет уведомления по электронной почте по протоколу SMTP. Это может выглядеть как вопрос кода для StackOverflow, но это не так. Приложение работает отлично, и его функция отправки электронной почты работает отлично. Проблема в том, что в некоторых системах, в частности в моей настольной системе Windows 7 Ultimate, исходящие соединения блокируются чем-то, что мне трудно определить.

Проблема, которую я вижу, состоит в том, что в какой-то момент очень скоро после установления соединения сокет-соединение закрывается с кодом 10053 , который равен 0x2745 , который является WSAECONNABORTED , то есть «Установленное соединение было прервано программным обеспечением на вашем хост-компьютере». , На моем хост-компьютере , и это примерно так - удаленный сервер не является источником отключения. Иногда приложение все еще успевает отправить 1-2 сообщения, прежде чем канал добросовестно разрушится силой свыше.

Мое первое предположение состояло в том, что это просто, это должен быть брандмауэр или антивирус. Единственное программное обеспечение такого рода, которое имеет встроенный брандмауэр и Защитник Windows. Отключение брандмауэра бесполезно, Защитник не настроен на выполнение каких-либо действий в реальном времени, он запускается по требованию. Машина не является частью домена или чего-то другого - чисто автономная.

Чтобы добавить к этому, я попытался отправить через безопасные соединения SSL и TLS, и это не помогло. В то же время у меня нет проблем с отправкой на серверы Почты Google. Я не знаю, что делает такую разницу, это может быть сертификат SSL от серверов Google с хорошей репутацией, но это только частный случай.

Вопросы заключаются в следующем: учитывая, что действие заключается в том, чтобы открыть сокет для удаленного SMTP-сервера и выполнить почтовые операции, что может быть причиной в Windows принудительно закрыть это соединение? Существуют ли какие-либо инструменты для устранения этой проблемы, чтобы найти причину и отключить ее?

2013-08-08 Обновление:

WireShark показывает следующий сеанс TCP:

Wireshark Log

1 ответ1

1

Обнаружение сетевого трафика с помощью, например, WireShark, расскажет вам гораздо больше о том, что происходит.

Есть ли у вас какие-либо подробности о том, где в диалоге SMTP происходят разъединения? Это совершенно случайно или имеет какую-либо связь с какими-либо командами SMTP? Я сильно подозреваю, что в вашем коде происходит нечто неожиданное, что вызывает проблемы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .