我尝试MailKit通过 SMTP 通过交换服务器发送电子邮件,但当我尝试连接时出现以下错误:
MailKit.dll 中发生“System.Security.Authentication.AuthenticationException”类型的异常,但未在用户代码中处理
附加信息:根据验证程序,远程证书无效。
谷歌搜索会带来很多有关 Gmail 的内容或作为其他错误消息的一部分(例如 FTP 或 Web api 请求等)。我已经与 IT 人员交谈过,它不是自签名证书,我们不需要身份验证(事实上,我管理的 BugZilla 实例使用相同的设置进行设置并且工作正常)。我做错了什么或者如何获得更多详细信息以进一步排除故障?
using (var Client = new SmtpClient())
{
Client.Connect("mail.address.com", 587, false);
Client.AuthenticationMechanisms.Remove("XOAUTH2");
Client.Send(Message);
Client.Disconnect(true);
}
Run Code Online (Sandbox Code Playgroud)
mail.address.com domain编辑:我已经与 IT 部门核实,它与托管 IIS和交换的IIS 中使用的证书相同。我也将其安装为受信任的根,但仍然遇到相同的错误。
编辑2:如果我将代码更新为,Client.Connect("mail.address.com", 587, true);则会收到错误:
>System.Private.Networking.dll 中发生“System.IO.IOException”类型的异常,但未在用户代码中处理
附加信息:由于数据包格式意外,握手失败。
尝试使用Client.Connect("mail.address.com", 587, SecureSocketOptions.None);禁用 STARTTLS。
如果您想保留 STARTTLS,您可以尝试覆盖Client.ServerCertificateValidationCallback.
获取有关错误的更多信息的最简单方法是ServerCertificateValidationCallback使用如下内容进行覆盖:
bool ValidateRemoteCertificate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
Console.WriteLine ("SslPolicyErrors: {0}", sslPolicyErrors);
return sslPolicyErrors == SslPolicyErrors.None;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10780 次 |
| 最近记录: |