发送电子邮件时出错yahoo smtp

时间:2013-02-14 21:53:20

标签: c#

我通过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;
        }

1 个答案:

答案 0 :(得分:0)

From MSDN

  

某些SMTP服务器要求在之前对客户端进行身份验证   服务器代表它发送电子邮件。此时将此属性设置为true   如果服务器请求,SmtpClient对象应该进行身份验证   使用当前登录用户的默认凭据。对于   客户端应用程序,这是大多数情况下的期望行为。

UseDefaultCredentials = true向SMTP服务器发送当前登录用户(即Windows用户)的凭据,而不是您定义的凭据。 试试UseDefaultCredentials = false