我通过thie article配置我的outlook 2010来发送和接收来自yahoo.com的电子邮件,它没有任何问题。
我开发了一个小应用程序来通过我的应用程序发送我的电子邮件,但它给了我错误:
"unable to read data from the transport connection:an exist connection was
forcibly closed by the remote host."
我的代码:
try
{
SmtpClient smtp = new SmtpClient("smtp.mail.yahoo.com", 465);
smtp.UseDefaultCredentials = true;
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential("myid", "mypass");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
MailMessage mailMessage = new MailMessage();
mailMessage.From = new System.Net.Mail.MailAddress("myid@yahoo.com", "blabla");
mailMessage.To.Add(new System.Net.Mail.MailAddress("xxx@live.com", "xxx@live.com"));
mailMessage.Subject = "test";
mailMessage.Body = "test";
mailMessage.IsBodyHtml = false;
mailMessage.SubjectEncoding = System.Text.Encoding.UTF8;
mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
mailMessage.Priority = MailPriority.High;
smtp.Send(mailMessage);
Console.WriteLine("hooooooooooraaaaaaaaaaaaaaa");
Console.ReadKey();
}
catch (Exception err)
{
Console.WriteLine(err.InnerException.Message);
Console.ReadKey();
return;
}
答案 0 :(得分:0)
某些SMTP服务器要求在之前对客户端进行身份验证 服务器代表它发送电子邮件。此时将此属性设置为true 如果服务器请求,SmtpClient对象应该进行身份验证 使用当前登录用户的默认凭据。对于 客户端应用程序,这是大多数情况下的期望行为。
UseDefaultCredentials = true
向SMTP服务器发送当前登录用户(即Windows用户)的凭据,而不是您定义的凭据。
试试UseDefaultCredentials = false