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 Hello
и т. Д.
Попытка добавления следующих строк в начале кода:
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue=false;
Почему C # застревает, а не отправляетClient Hello
?
Это прекрасно работает, когда я использую другой хост.
РЕДАКТИРОВАТЬ: Вы можете воспроизвести проблему самостоятельно, выполнив код выше , как .Вы получите ошибку тайм-аута вместо ошибки неверных учетных данных, и, используя wireshark, вы увидите, что C # даже не пытается установить соединение TLS.