我的一个客户最近更换了 IT 提供商,并在此过程中重新创建了他们的 Office 365 设置(包括 Sharepoint 和 Outlook)。
当他们这样做时,他们默认打开了 MFA(多因素身份验证)。在这样做时,他们似乎以某种方式阻止了我的应用程序通过他们用户下的 SMTP 服务器发送电子邮件。
这是我的代码的基本示例
using (SmtpClient client = new SmtpClient("Smtp.office365.com", 587))
{
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("user@domain.com", "password");
MailMessage mail = new MailMessage()
{
From = new MailAddress("user@domain.com"),
IsBodyHtml = false,
Subject = "Test message",
Body = "Test content",
};
mail.To.Add(new MailAddress("receiver@domain.com"));
client.Send(mail);
};
当我发送电子邮件时,我收到以下错误 -
System.Net.Mail.SmtpException: 'SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.57 客户端未通过身份验证发送邮件。
所以一开始我因为 MFA 被打开而无法发送,但现在我认为这不再是问题了,我们已经尝试了很多东西,但我仍然无法收到要发送的电子邮件。
我可以使用给定的用户名/密码登录帐户,所以我不认为这是一个真正的身份验证问题。
这是我们尝试过的:
启用 SMTP 身份验证
应用程序密码而不是用户密码来规避应用程序中的 MFA。
对此特定用户禁用 MFA。
将此帐户从共享邮箱切换到常规邮箱。
禁用 Azure 安全默认值。
我不知道还能看什么。该错误似乎没有指向任何明显的东西。有人可以帮忙吗。
(另外,为了记录,我知道还有其他类似的问题,但没有人解决问题,所以我们在这里)。