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

问题描述

我正在尝试使用启用了双重身份验证的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 进行身份验证

标签: c#asp.netemailoffice365two-factor-authentication

解决方案


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

推荐阅读