0 Visual Studio 2015 中的代码
1 我正在使用 Mailkit 最新版本 (1.18.1.1) 从我自己的电子邮件服务器发送电子邮件。
2 电子邮件服务器具有自签名证书,该证书不受信任。
3 我在代码中添加了以下两行,以忽略 SERVER CERTIFICATE 错误:
client.ServerCertificateValidationCallback = (mysender, certificate, chain, sslPolicyErrors) => { return true; };
client.CheckCertificateRevocation = false;
4 但我的程序仍然崩溃。
5 在电子邮件服务器日志中显示错误:
来自未知 [xxx.xxx.xxx.xxx] 的 SSL_accept 错误:对等方重置连接
我猜这是因为服务器证书问题。因为在 Wireshark 捕获中,一旦我获得 SERVER 证书,连接就会终止。
6 我还在我的系统中安装了电子邮件服务器的 UNTRUSTED 证书,但问题仍然存在。
8 完整代码:
使用 (var client = new SmtpClient(new ProtocolLogger("logging.log")))
{
// For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
client.ServerCertificateValidationCallback = (mysender, certificate, chain, sslPolicyErrors) => { return true; };
client.CheckCertificateRevocation = false;
client.Connect("xxx.com", 465, true);
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
// Note: only needed if the SMTP server requires authentication
client.Authenticate("xxx@xxx.com","123456");
client.Send(message);
client.Disconnect(true);
}