在c#windows应用程序中从yahoo发送邮件时出现身份验证错误

时间:2016-11-14 07:20:36

标签: c# windows winforms smtp yahoo

我正在尝试使用yahoo的smtp从我的软件发送电子邮件,但它显示以下错误 “SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.7.1需要身份验证”。

我知道google中安全性较低的应用设置,但我不知道雅虎的设置。使用gmail帐户凭据运行相同的代码。这是参考的代码。

string EmailFrom = "test@yahoo.com";
        string EmailTo = "test@gmail.com";
        string PassWord = "test123";
        string EmailHost = "smtp.mail.yahoo.com";
        string status = "";
        string Body = "";

        MailMessage message = new MailMessage();
        SmtpClient smtp = new SmtpClient();

        message.From = new MailAddress(EmailFrom);
        message.To.Add(new MailAddress(EmailTo));
        message.Subject = "Auto Backup at test" ;
        message.Body = "Backup has been taken at test on" + DateTime.Now;
        Body = "Backup has been taken at test on" + DateTime.Now;
        smtp.Port = 587;
        smtp.Host = EmailHost;
        smtp.EnableSsl = true;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new NetworkCredential(EmailFrom, PassWord);
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        //ServiceLogLibrary.WriteErrorlog("Step:5");
        //Library.WriteErrorlog("Before sending mail");
        smtp.Send(message);

2 个答案:

答案 0 :(得分:3)

你需要去

  1. Go to your "Account security" settings.
  2. 选择允许使用较少安全登录的应用。
  3. 要拒绝或关闭应用访问权限,请取消选择不需要的应用。
  4. 来源:Temporarily allow or deny access to apps using older security sign in

    [Screenshot]

答案 1 :(得分:2)

这里只是提供更多信息,因为自从接受答案发布以来,情况有所变化。

  1. 转到帐户安全设置(https://login.yahoo.com/account/security
  2. 滚动到底部并搜索如下所示的“管理应用密码”标题,然后单击它以添加新应用。

enter image description here

  1. 选择一个应用程序类型并生成密码。对于API应用,请使用“其他应用”。

enter image description here

  1. 通过SmtpClient发送电子邮件时,请使用此密码代替您的标准邮箱密码。