簡體   English   中英

System.Net.Mail.SmtpException: '郵箱不可用。 服務器響應為:未采取請求的郵件操作:郵箱不可用'

[英]System.Net.Mail.SmtpException: 'Mailbox unavailable. The server response was: Requested mail action not taken: mailbox unavailable'

由於雅虎對用戶身份驗證進行了更改,因此我收到了此消息。 如果我使用雅虎建議的選項,我的代碼仍然有效,即:

在切換應用程序或更新應用程序時,您可以授予舊應用程序臨時訪問權限。 請記住,這不是用於永久訪問,之后您需要將其關閉。 打開允許使用安全性較低的應用程序登錄。一旦該功能打開,您將收到定期警報,提醒您將其關閉...

我的問題是如何在不打開的情況下更新我的代碼以使其正常工作

允許使用不太安全的登錄的應用程序。

在雅虎方面?

代碼:

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);
}

為了避免使用該選項,您需要使用OAuth2而不是用戶 ID 和密碼進行身份驗證。

您需要在Yahoo 注冊您的應用程序 然后通過 OAuth2 工作流程:

  • 從雅虎獲取請求令牌
  • 啟動 Web 瀏覽器並將用戶發送到 Yahoo 以授權您的應用程序並獲取授權密鑰
  • 用授權密鑰交換訪問令牌
  • 將訪問令牌存儲在某處並在使用 SMTP 登錄時使用它

為此,您將需要第三方庫。 我認為 SmtpClient 不支持 OAuth,您需要一個庫來為您處理其他 OAuth 詳細信息。

是一個如何使用 MailBee.Net(商業電子郵件庫)進行 OAuth 的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM