如何在 asp.net C# 中使用启用两因素身份验证的 office365 电子邮件帐户发送电子邮件?

Posted

技术标签:

【中文标题】如何在 asp.net C# 中使用启用两因素身份验证的 office365 电子邮件帐户发送电子邮件?【英文标题】:How to send email using two factor authentication enabled office365 email account in asp.net C#? 【发布时间】:2019-08-29 03:58:09 【问题描述】:

我正在尝试使用启用双重身份验证office365电子邮件帐户发送电子邮件。它给出了身份验证失败错误。对于尚未启用双因素身份验证的电子邮件帐户,效果很好。如何解决这个问题?

using (SmtpClient client = new SmtpClient())

   client.Port = Convert.ToInt32(appSettings["Port"]);
   client.DeliveryMethod = SmtpDeliveryMethod.Network;
   client.Host = "smtp.office365.com"; 
   client.EnableSsl = true;
   client.UseDefaultCredentials = false;
   client.Credentials = new System.Net.NetworkCredential(SenderMailAddress, SenderMailPassword); 
   email.Subject = String.Format("0", txtMailSubject.Text);
   //                   
   email.Body = String.Format("0", text);

   email.IsBodyhtml = true;                  

   client.Send(email);

错误信息是

System.Net.Mail.SmtpException:SMTP 服务器需要安全 连接或客户端未通过身份验证。服务器响应 是:5.7.1 客户端未在 System.Net.Mail.MailCommand.CheckResponse

【问题讨论】:

你可以通过使用App Passwords来解决这个问题 @Manusha 您是否使用 Brendan Green 提供的解决方案解决了您的问题? @Marc 不,我找不到解决方案。因此,我从该电子邮件帐户中删除了两因素身份验证。 在account.activedirectory.windowsazure.com/AppPasswords.aspx 创建和使用应用密码 您的交易所管理员必须为 2FA 用户启用此功能。文档:docs.microsoft.com/en-us/azure/active-directory/user-help/… 【参考方案1】:
            MailAddress from = new MailAddress("fromid");
            MailAddress to = new MailAddress("toID");
            MailMessage message = new MailMessage(from, to);
            message.Subject = "Using the new SMTP client.";
            message.Body = @"The sensor get offline ...";

            SmtpClient client = new SmtpClient(server);
            client.Host = "hostID"; 
            client.Port = 587;
            client.EnableSsl = true;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = true;
            client.Credentials = new NetworkCredential
            
                UserName = "**********",
                Password = "*************,
            ;
            Console.WriteLine("Sending an email message to 0 using the SMTPhost 1.");

【讨论】:

您能否解释一下这将如何解决 2 因素身份验证?

以上是关于如何在 asp.net C# 中使用启用两因素身份验证的 office365 电子邮件帐户发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

更改默认 ASP.NET 身份 两因素记住 Cookie 过期时间

两因素 Google 身份验证与服务器上的代码不匹配 - ASP.Net MVC

如何在 ASP.NET Core 3.1 中启用多重身份验证?

帮助:如何在 ASP.NET 开发服务器上启用 Windows 身份验证?

为 Gmail 启用两因素身份验证时发送电子邮件失败

如何将ansible与两因素身份验证一起使用?