【发布时间】:2020-11-05 18:41:15
【问题描述】:
我最初编写了 sub 用于使用 SmtpClient 发送电子邮件,该邮件工作了一段时间,直到最近我发现它不再工作了。一些研究表明该协议已被贬低并使用 MailKit 发送电子邮件。所以我写了一小段代码,似乎间歇性地工作。奇怪,因为对我来说它要么有效,要么无效,有时不是。这是我经过一番研究后最终写的(我认为它不正确)。
using (var smtpClient = new MailKit.Net.Smtp.SmtpClient())
{
smtpClient.AuthenticationMechanisms.Remove("XOAUTH2");
smtpClient.ServerCertificateValidationCallback = (s, c, h, e) => true;
smtpClient.SslProtocols = System.Security.Authentication.SslProtocols.Ssl3 | System.Security.Authentication.SslProtocols.Tls | System.Security.Authentication.SslProtocols.Tls11 | System.Security.Authentication.SslProtocols.Tls12 | System.Security.Authentication.SslProtocols.Ssl2;
smtpClient.CheckCertificateRevocation = false;
smtpClient.Connect("mail.myserver.com", 465, MailKit.Security.SecureSocketOptions.SslOnConnect);
smtpClient.Authenticate("username", "pwd");
smtpClient.Send(mailMessage);
smtpClient.Disconnect(true);
}
这是异常消息:
尝试建立 SSL 或 TLS 连接时出错。 一种可能是您尝试连接到不支持 SSL/TLS 的端口。 另一种可能是服务器提供的 SSL 证书不被系统信任,原因如下:
- 服务器正在使用无法验证的自签名证书。
- 本地系统缺少验证服务器证书所需的根证书或中间证书。
- 服务器提供的证书已过期或无效。 请参阅https://github.com/jstedfast/MailKit/blob/master/FAQ.md#InvalidSslCertificate 了解可能的解决方案。
内部异常消息: 身份验证失败,因为远程方已关闭传输流。
发生了什么事?
【问题讨论】: