我正在尝试发送一封包含C#代码的电子邮件,从MSDN上的示例复制(例如https://msdn.microsoft.com/en-us/library/14k9fb7t%28v=vs.110%29.aspx)
// from and password contain my credentials
// to contains a valid email address
public static void CodeExample()
{
try
{
using (MailMessage mail = new MailMessage(from, to))
{
using (SmtpClient server = new SmtpClient("smtp.googlemail.com"))
{
mail.From = new MailAddress(from);
mail.To.Add(new MailAddress(to));
mail.Subject = "Test subject";
mail.Body = "Test message";
mail.IsBodyHtml = false;
server.Port = 465;
server.Credentials = new System.Net.NetworkCredential(from, password);
server.UseDefaultCredentials = true;
server.EnableSsl = true;
server.ServicePoint.MaxIdleTime = 1;
server.Timeout = 60000;
Console.WriteLine("Sending to {0} by using SMTP host {1} port {2}.", to.ToString(), server.Host, server.Port);
server.Send(mail);
Console.WriteLine("mail Sent");
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Console.WriteLine("Inner Exception:");
Console.WriteLine(ex.InnerException?.ToString());
}
}
但我总是得到例外:
System.Net.Mail.SmtpException:发送邮件失败。 ---> System.IO.IOException: 无法从传输连接中读取数据:net_io_connectionclosed。
“来自”地址详情已经过检查,似乎没问题。从Yahoo!发送帐户以同样的方式失败。我尝试了很多SmtpClient
属性的不同组合。我的防火墙日志中没有消息。
使用Thunderbird,我可以发送Googlemail和Yahoo!帐户没有问题。
如果有任何关于如何使其发挥作用的提示,我将不胜感激。
修改
我看过这篇文章SmtpException: Unable to read data from the transport connection: net_io_connectionclosed
谷歌邮件在端口587上失败(使用和评论UseDefaultCredentials = true
和EnableSsl = true
),报告我有一个不安全的应用程序。我会试试Yahoo!在587号港口。
答案 0 :(得分:0)
感谢您的帮助。使用端口587很重要,如SmtpException: Unable to read data from the transport connection: net_io_connectionclosed
所示我仍然无法让smtp.googlemail.com或smtp.gmail.com工作,但SmtpClient with Gmail涵盖了这一点。
我的程序现在正在使用smtp.mail.yahoo.com。