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

Man*_*sha 6 c# asp.net email office365 two-factor-authentication

我正在尝试使用启用了双因素身份验证的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);
}
Run Code Online (Sandbox Code Playgroud)

错误信息是

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

小智 -4

            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}.");
Run Code Online (Sandbox Code Playgroud)