服务器响应为:5.7.57 SMTP-Office 365

时间:2019-04-11 21:14:56

标签: asp.net smtp office365

当前,我们有一个发送电子邮件的Web表单,由于我们公司Office 365的迁移,该表单已停止工作数月。我在排除故障时已删除了所有其他代码,而仅运行电子邮件部分以获取以下错误:“ System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.57 SMTP;客户端未通过身份验证以在“ MAIL FROM”期间发送匿名邮件。

我已经在Web /堆栈溢出中找到了许多具有相同错误代码的解决方案,尝试将代码更改为建议的解决方案,但没有任何运气。

尝试了很多不同的电子邮件别名,这些别名在我们的全局地址列表中列出,但我的帐户没有运气,端口(25,587),smtp地址不同,并且到目前为止没有运气。

多个用户说:“不幸的是,此代码对Office 365不再有效。出现的错误消息是SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.57 SMTP;客户端在下面链接的文章中,MAIL FROM [HE1PR05CA0133.eurprd05.prod.outlook.com]“期间未通过身份验证可发送匿名邮件。

Send SMTP email using System.Net.Mail via Exchange Online (Office 365)

我的代码如下所示。

    Dim mail As MailMessage = New MailMessage
    mail.From = New MailAddress("email12345@company.com")
    mail.To.Add("email12345@company.com")
    mail.Subject = "Test"
    mail.IsBodyHtml = False
    mail.Body = "Test"

    Dim SmtpServer As SmtpClient = New SmtpClient

    SmtpServer.Host = "smtp.office365.com"
    SmtpServer.Port = 587
    SmtpServer.UseDefaultCredentials = False
    SmtpServer.Credentials = New System.Net.NetworkCredential("MyEmail", "MyPass")
    SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network
    SmtpServer.EnableSsl = True
    SmtpServer.TargetName = "STARTTLS/smtp.office365.com"
    Try
        SmtpServer.Send(mail)
    Catch ex As Exception
        Response.Write(ex.ToString)
    End Try

似乎很多人都在发生这种情况,我想知道他们正在做什么来解决它?

2 个答案:

答案 0 :(得分:0)

我通过为Outlook365帐户创建应用密码来解决了此问题。您可以按照以下步骤创建/管理应用密码。

转到我的帐户>>安全和隐私>>其他安全验证>>创建和管理应用密码

创建一个应用密码,并在您的代码中使用它。希望这能解决您的问题

答案 1 :(得分:0)

要启用应用密码,您必须对帐户进行双重身份验证,并且管理员(如果您的帐户在组织中)必须允许帐户(或组织中)使用应用密码 我不是 365 管理员,也不知道所有设置。

  • 但是,我们遇到了类似的问题,即发件人帐户没有为 SMTP AUTH 启用设置“现代身份验证”。
  • 请注意,此方法运行了很长时间后突然停止(不确定 Microsoft 是否在 2021 年 2 月下旬进行了一些安全措施)

为 Outlook 等(客户端?)启用了现代身份验证, 但不适用于“SMTP AUTH”、“IMAP”和“POP” (我假设这是“默认设置”,建议除非您需要,否则不要启用现代身份验证。

  • 请参阅下面的两篇文章。

https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission 几乎所有连接到 Office 365 或 Microsoft 365 中的 Exchange Online 邮箱的现代电子邮件客户端(例如,Outlook、Web 上的 Outlook、iOS 邮件、iOS 和 Android 版 Outlook 等)都不使用 SMTP AUTH 发送电子邮件.

因此,我们强烈建议您在 Exchange Online 组织中禁用 SMTP AUTH,并仅为仍然需要它的帐户(即邮箱)启用它。有两个设置可以帮助您做到这一点: 用于禁用(或启用)SMTP AUTH 的组织范围设置。
覆盖租户范围设置的每个邮箱设置。

也很高兴知道。将列出“smtp auth 客户端”的数量。 https://docs.microsoft.com/en-us/microsoft-365/security/office-365-security/mfi-smtp-auth-clients-report?view=o365-worldwide