MailKit.Security.AuthenticationException: '535: 5.7.139 身份验证失败,用户被组织的安全默认策略锁定

Paw*_*iya 5 smtp smtpclient .net-6.0

我正在尝试使用以下配置从我的 Office365 电子邮件帐户的 .Net 6 应用程序发送电子邮件

"EmailConfiguration": {
   "From": "XXXXXXXXXXX",
   "SmtpServer": "smtp.office365.com",
   "Port": 25, // tried port 587 also
   "Username": "XXXXXXXXX",
   "Password": "XXXXXXXX"
}
Run Code Online (Sandbox Code Playgroud)

这是我发送电子邮件的代码:

using var client = new SmtpClient();
try
{
    client.Connect(_emailConfig.SmtpServer, _emailConfig.Port, MailKit.Security.SecureSocketOptions.StartTls);
    //client.AuthenticationMechanisms.Remove("XOAUTH2");
    client.Authenticate(_emailConfig.UserName, _emailConfig.Password);

    client.Send(mailMessage);
}
catch
{
    //log an error message or throw an exception or both.
    throw;
}
finally
{
    client.Disconnect(true);
    client. Dispose();
}
Run Code Online (Sandbox Code Playgroud)

client.Authenticate但我在通话时收到此错误

MailKit.Security.AuthenticationException: '535: 5.7.139 身份验证失败,用户被组织的安全默认策略锁定。请联系您的管理员。[PN2PR01CA0027.INDPRD01.PROD.OUTLOOK.COM 2023-12-10T12:33:11.474Z 08DBF8259ECF3F85]'

我们尝试检查管理面板中的所有内容,以查看特定电子邮件帐户或用户是否被锁定,但我们没有发现类似情况。

我已使用以下命令Authenticated SMTP启用了该特定电子邮件帐户的设置

我也尝试禁用该设置,但随后我开始收到身份验证失败的错误。

有人可以指导我可能出了什么问题吗?

小智 2

我遇到了同样的问题,发现您必须在 Entra 中启用条件访问。Microsoft 不推荐这样做,但这是我能够使其正常工作的唯一方法。

\n

去做这个:

\n
    \n
  • 至少以安全管理员身份登录 Microsoft Entra 管理中心。
  • \n
  • 浏览至\xe2\x80\xafIdentity\xe2\x80\xaf> 概述 > 属性。
  • \n
  • 选择管理安全默认值。(它位于页面底部)
  • \n
  • 将安全默认值设置为启用。
  • \n
  • 选择保存。
  • \n
\n

执行此操作的 Microsoft 官方说明如下: https: //learn.microsoft.com/en-us/entra/fundamentals/security-defaults

\n

您还必须关闭您想要发送电子邮件的用户的多重身份验证。可能还有其他方法可以通过应用程序密钥或其他方式来解决此部分,但我对此不是 100% 确定。我确信有人会在这里提出这一点。

\n

  • “将安全默认设置为启用。” - 这不应该被禁用吗?这时他们会询问禁用的原因,条件访问就是其中之一。 (2认同)