发送邮件失败,连接方未正确响应

本文关键字:连接 方未正 响应 失败 | 更新日期: 2023-09-27 18:36:04

尝试从 C# 发送电子邮件时,我收到"发送邮件失败"。 内部异常是"连接尝试失败,因为连接方在一段时间后未正确响应,或者建立的连接失败,因为连接的主机无法响应 [IP 地址]。

这是我目前拥有的代码,尽管我已经尝试了许多变体但无济于事:

string To = "[my email]";
string From = "[my email]";
string Subject = "Test Email";
string Body = "Test email.";
MailMessage completeMessage = new MailMessage(From, To, Subject, Body);
SmtpClient client = new SmtpClient("smtp.microsoft.com", 25);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential("[my login]", "[my password]");
client.EnableSsl = true;
client.Send(completeMessage);

我已经尝试过没有端口号,没有登录凭据,也没有交付方法(主要基于我认为是类似问题的正确答案的其他版本),但我总是得到相同的例外。

更新:

根据拉斯金的建议,我用自己的gmail帐户(基本上是我给我的测试电子邮件)尝试了这个。 这是我在代码中得到的内容:

string To = "[my email]@gmail.com";
string From = "[my email]@gmail.com";
string Subject = "Test Email";
string Body = "With stuff in it.";
MailMessage completeMessage = new MailMessage(From, To, Subject, Body);
SmtpClient client = new SmtpClient("smtp.gmail.com", 25);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential("[login]", "[password]");
client.EnableSsl = false;

我收到的新消息是"SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.7.0 必须首先发出 STARTTLS 命令。i3sm38798124pdf.39 - gsmtp"。

更改此行后,我能够成功发送和接收电子邮件:

client.EnableSsl = true;

但是,切换回原始帐户凭据会导致与之前相同的错误。

发送邮件失败,连接方未正确响应

尝试使用 EnableSsl=false,因为您使用的是端口 25(这是普通的 SMTP):http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#Ports。

或者使用正确的端口进行安全连接。

在此之后尝试您的 Gmail 设置,如果您仍然收到"连接尝试失败,因为连接方在一段时间后未正确响应,或建立的连接失败,因为连接的主机无法响应 [IP 地址]"问题,请告诉我。