MailMessage message = new MailMessage();
message.From = new MailAddress("MyMailAddress");
message.To.Add("DestinationMailAddress");
message.CC.Add("CCMailAddress");
message.Subject = "This is Subject";
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Body = "This is a test e-mail message sent by an application. ";
SmtpClient client = new SmtpClient();
client.Port = 587;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = true;
client.EnableSsl = true;
client.Host = "smtp.gmail.com";
client.Send(message);
这是我的代码。错误是
发送电子邮件失败。
内部例外:
{"无法连接到远程服务器"} {"连接尝试失败,因为连接方在一段时间后未正确响应,或已建立的连接失败,因为已连接的主机已连接未能回复74.125.68.109:587"}错误代码:10060
答案 0 :(得分:4)
您的代码使用gmail作为您的SMTP:
client.Host = "smtp.gmail.com";
然而,您将SMTP登录凭据指定为您的Windows帐户:
client.UseDefaultCredentials = true;
如果gmail实际上是您的SMTP,则需要将其设置为false,然后提供您的Gmail登录凭据。
所以你的代码应该是这样的:
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword");
看起来您也可能遇到防火墙问题
{"无法连接到远程服务器"} {"连接尝试失败,因为连接方在一段时间后未正确响应,或已建立的连接失败,因为已连接的主机已连接未能回复74.125.68.109:587"}错误代码:10060
确保应用程序可以访问互联网,并且打开必要的端口以访问Gmail。还要确保在您的Gmail帐户上允许使用较少的安全应用程序,并且如果您使用双因素身份验证,则表明您已为该帐户创建了应用程序专用密码,并且正在使用该密码进行连接。
如何启用安全性较低的应用:https://support.google.com/accounts/answer/6010255?hl=en
您可能还需要更改MailAddress.To
的填充方式:
message.To.Add(new MailAddress("DestinationMailAddress"));
答案 1 :(得分:0)
由于功能被包装,您应该使用内部异常消息来获取详细的错误消息。失败的原因就在那里!
public static void Main()
{
try {
SendMail();
}
catch(Exception e) {
if (e.InnerException != null)
Console.WriteLine("Inner exception: {0}", e.InnerException);
}
}
答案 2 :(得分:0)
进行这些更改
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword");
这也是
http://docs.helpscout.net/article/120-smtp-settings
完整的工作代码
protected void SendMail()
{
MailMessage msg = new MailMessage();
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
try
{
msg.Subject = "Add Subject";
msg.Body = "Add Email Body Part";
msg.From = new MailAddress("Valid Email Address");
msg.To.Add("Valid Email Address");
msg.IsBodyHtml = true;
client.Host = "smtp.gmail.com";
System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential("Valid Email Address", "Password");
client.Port = int.Parse("587");
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = basicauthenticationinfo;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(msg);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
}