2017-01-26 19 views
2

У меня проблема с отправкой электронной почты через SMTP Office 365 и MailKit. Исключение я получаю:MailKit C# SmtpClient.Connect() to Office 365, генерирующий исключение: «Существующее соединение было принудительно закрыто удаленным хостом»

Необработанное исключение: System.IO.IOException: Не удается прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным узлом.

System.Net.Sockets.SocketException: Существующее соединение было принудительно закрыто удаленным узлом

https://github.com/jstedfast/MailKit

Код:

var smtpClient = new SmtpClient(); 

smtpClient.Connect("smtp.office365.com", 587, true); 

настройки Microsoft Office 365 должна быть правильной :

https://support.office.com/en-us/article/POP-and-IMAP-settings-for-Outlook-Office-365-for-business-7fc677eb-2491-4cbc-8153-8e7113525f6c

Странно, что если я использую следующее, все будет работать, хотя Office 365 говорит, что требуется SSL.

smtpClient.Connect("smtp.office365.com", 587, false); 

ответ

5

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

Рукопожатие не удалось из-за неожиданный формат пакет

Решением является для подключения к Office 365, как это вместо этого:

smtpClient.Connect("smtp.office365.com", 587, SecureSocketOptions.StartTls); 
+0

Просто комментируя, чтобы подтвердить, что это правильное решение , SMTP действительно использует только SSL-подключенные соединения на порту 465. Порт 2 и 587 используют StartTLS, если они вообще используют SSL. Это, к сожалению, обычно не объясняется в руководствах по настройке. – jstedfast

+0

Это просто спасло меня. Я сделал ошибку, читая документацию :) –