string host = "gauntlet.asoshared.com", username= "a@a.test", pwd = "abc",
from = "a@a.test", to = "b@b.test";
int port = 465;
var mm = new MailMessage(from, to);
mm.Body = "b1";
mm.Subject = "s1";
mm.IsBodyHtml=false;
using (var smtp=new SmtpClient(host, port)) {
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential (username, pwd);
smtp.Send(mm);
}
这一直停留在smtp.Send. 大约 2 分钟后,我收到超时错误。使用 Outlook,它可以完美运行(使用我的真实凭据)。查看 Wireshark,我在运行此代码时看到 TCP SYN、SYN-ACK、ACK,然后什么也没有。使用 Outlook 时,后面跟着一个TLSv1.2 Client Helloetc。
尝试在代码开头添加以下行:
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue=false;
为什么 C# 卡住了,甚至没有发送Client Hello?
当我使用不同的主机时它工作正常。
编辑:您可以通过按原样运行上面的代码自己重现该问题。您将收到超时错误而不是错误凭据错误,并且使用wireshark,您可以看到C# 甚至没有尝试TLS 连接。
小怪兽爱吃肉
米琪卡哇伊
SMILET
相关分类