让SmtpClient使用自签名SSL证书

sip*_*wiz 9 c# ssl self-signed smtpclient

我正在尝试使用System.Net.Mail.SmtpClient类通过我公司的电子邮件服务器中继电子邮件.与邮件服务器的所有SMTP连接都必须是SSL,并且它使用自签名证书.这对于Outlook来说很好,你可以在警告对话框上单击确定,但是有没有人知道让SmtpClient接受自签名证书的方法?

我打算在Windows Azure平台上使用此应用程序,因此我无法将自签名证书安装为受信任的根.

Dar*_*rov 11

您可以查看ServerCertificateValidationCallback属性:

ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

它表示运行时在尝试验证SSL证书时调用的回调.通过返回true你基本上说你不关心证书是否有效 - >你总是接受它.当然,在生产环境中拥有自签名证书并不是一个好主意.

  • 你需要在**之前设置实例化`SmtpClient`类,理想情况是在应用程序的某个全局初始化部分. (5认同)

sip*_*wiz 5

我的问题最终是 .Net SmtpClient 类显然不支持将端口 465 用于 SMTP SSL 连接。使用带有自签名 SSL 证书的端口 25 工作正常。

MSDN System.Net 论坛问题可以将 SmtpClient 配置为使用自签名证书吗?.