Получение SmtpClient для работы с самозаверяющим сертификатом SSL - PullRequest
8 голосов
/ 28 января 2010

Я пытаюсь использовать класс System.Net.Mail.SmtpClient для ретрансляции электронной почты через сервер электронной почты моей компании. Все SMTP-соединения с почтовым сервером должны быть SSL, и он использует самозаверяющий сертификат. Это хорошо для Outlook, где вы можете просто нажать кнопку «ОК» в диалоговом окне с предупреждением, но кто-нибудь знает способ заставить SmtpClient принять самоподписанный сертификат?

Я планирую использовать это приложение на платформе Windows Azure, поэтому я не смогу установить самозаверяющий сертификат в качестве доверенного корня.

Ответы [ 2 ]

10 голосов
/ 28 января 2010

Вы можете взглянуть на свойство ServerCertificateValidationCallback :

ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, sslPolicyErrors) => true;

Он представляет собой обратный вызов, который вызывается средой выполнения при попытке проверить сертификат SSL. Возвращая true, вы в основном говорите, что вам все равно, действителен сертификат или нет -> вы всегда принимаете его. Конечно, иметь собственные сертификаты в производственной среде не очень хорошая идея.

3 голосов
/ 06 февраля 2010

Моя проблема закончилась тем, что класс .Net SmtpClient, очевидно, не поддерживает использование порта 465 для SMTP-соединений SSL. Использование порта 25 с самозаверяющим сертификатом SSL работало правильно.

MSDN System.Net forum question Можно ли настроить SmtpClient для работы с самоподписанным сертификатом? .

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