【问题标题】:System.Net.Mail.SmtpException: 'Mailbox unavailable. The server response was: Requested mail action not taken: mailbox unavailable'System.Net.Mail.SmtpException: '邮箱不可用。服务器响应为:未采取请求的邮件操作:邮箱不可用'
【发布时间】:2018-09-26 22:53:06
【问题描述】:

我收到此消息是因为雅虎对用户身份验证进行了更改。 如果我使用 Yahoo 建议的选项,我的代码仍然有效,即:

在您切换应用或更新您的应用时,您可以将旧应用 临时访问。请记住,这不是永久性的 访问,然后您需要将其关闭。打开允许应用 使用安全性较低的登录。启用该功能后,您将 定期收到提醒您将其关闭的警报...

我的问题是如何在不开启的情况下更新我的代码以工作

允许使用安全性较低的登录的应用。

在雅虎方面?

代码:

private void Test_Click(object sender, EventArgs e)
{
    MailMessage mail = new MailMessage("userid@yahoo.com", "user@example.com", "Test", "Hello World");

    SmtpClient smtp = new SmtpClient();
    smtp.UseDefaultCredentials = false;
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtp.EnableSsl = true;
    smtp.Host = "smtp.mail.yahoo.com"; 
    smtp.Port = 587;//I tried 465 as well
    smtp.Credentials = new NetworkCredential( "userid@yahoo.com", "myPassword");

    smtp.Send(mail);
}

【问题讨论】:

    标签: system.net.mail yahoo-mail


    【解决方案1】:

    为避免使用该选项,您需要使用OAuth2 而不是用户 ID 和密码进行身份验证。

    您需要register your application with Yahoo。然后通过 OAuth2 工作流程:

    • 从 Yahoo 获取请求令牌
    • 启动 Web 浏览器并将用户发送到 Yahoo 以授权您的应用程序并获取授权密钥
    • 用授权密钥换取访问令牌
    • 将访问令牌存储在某处并在使用 SMTP 登录时使用它

    为此,您需要第三方库。我认为 SmtpClient 不支持 OAuth,您需要一个库来为您处理其他 OAuth 详细信息。

    Here 是一个如何使用 MailBee.Net(商业电子邮件库)进行 OAuth 的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2011-04-20
      • 2019-08-30
      • 2011-12-16
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多