由于Yahoo更改了用户身份验证,因此我收到此消息。 如果我使用Yahoo建议的选项,我的代码仍然有效:
切换应用程序或更新应用程序时,您可以将旧应用程序提供给 临时访问。请记住,这不是永久性的 访问,然后您将其关闭。打开允许应用 使用安全性较低的登录帐户。启用该功能后,您将 会定期收到提醒您将其关闭的警报...
我的问题是如何在不打开
的情况下更新代码以使其正常工作允许使用安全性较低的应用登录。
在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);
}
答案 0 :(得分:0)
为避免使用该选项,您将需要使用OAuth2进行身份验证,而不要使用用户ID和密码。
您需要register your application with Yahoo。然后完成OAuth2工作流程:
您将为此需要第三方库。我认为SmtpClient不支持OAuth,您需要一个库来为您处理其他OAuth详细信息。
Here是如何使用MailBee.Net(商业电子邮件库)进行OAuth验证的示例。