我有一个在多个旧网站上使用的简单代码,代码用于在提交表单时发送电子邮件通知。这段代码工作正常。然而,IT 管理员希望为发件人电子邮件启用多重身份验证 (MFA),该电子邮件基本上是 Office365 电子邮件地址。
下面的代码可能会起作用,因为它可能不会影响启用 MFA 的电子邮件地址,因为我们正在使用此电子邮件使用代码发送电子邮件?
using System;
using System.Net;
using System.Net.Mail;
protected void SendEmail()
{
string fromEmail = "[email protected]";
string appPassword = "YourAppPassword"; // Use the App Password generated for the application
string toEmail = "[email protected]";
string subject = "Test Email";
string body = "This is a test email sent from ASP.NET WebForms.";
try
{
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress(fromEmail);
mail.To.Add(toEmail);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
using (SmtpClient smtp = new SmtpClient("smtp.office365.com", 587))
{
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential(fromEmail, appPassword); // Use the App Password
smtp.Send(mail);
}
Response.Write("Email sent successfully.");
}
}
catch (Exception ex)
{
Response.Write("Error: " + ex.Message);
}
}
对此进行研究后,很可能如一些参考文献中指出的那样,但是这些参考文档引用的是旧版本的解决方案。因此,我正在使用 MS 上提供的最新文档更新工作解决方案。解决方案几乎相同。
代码将保持不变,只是您必须使用可在 https://mysignins.microsoft.com/security-info
创建的应用程序密码第1步:启用MFA/2FA后登录您的office365网站。 第 2 步:转到安全信息选项卡并添加新的登录方法“+ 添加登录方法” [![在此处输入图像描述][1]][1]
第3步:选择应用程序密码方法并完成步骤 [![在此处输入图像描述][2]][2]
第4步:保存应用程序密码以在代码中使用
smtp.Credentials = new NetworkCredential(fromEmail, appPassword);
这就是您需要做的全部事情,代码应该可以正常运行。我已多次测试此代码以确保您能够发送电子邮件。
我想说的最后一点是,在 IT 管理员为该用户启用 2FA/MFA 后,您应该等待至少 1 小时以使更改反映到全局,对于我来说,我的代码在 2FA 后继续工作了近 10 分钟无需使用应用程序密码即可启用。 [1]:https://i.sstatic.net/HN8UV8Oy.png [2]:https://i.sstatic.net/rUsZvWjk.png