【问题标题】:The server response was: 5.7.57 SMTP - Office 365服务器响应为:5.7.57 SMTP - Office 365
【发布时间】:2019-09-02 14:35:41
【问题描述】:

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

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

尝试了我们的全球地址列表中列出的许多不同的电子邮件别名,但我的帐户没有运气、不同的端口 (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

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

【问题讨论】:

    标签: asp.net smtp office365


    【解决方案1】:

    要启用应用密码,您必须对帐户进行两次身份验证,并且管理员(如果您的帐户在组织中)必须允许帐户(或组织中)使用应用密码 我不是 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 clients”的数量。 https://docs.microsoft.com/en-us/microsoft-365/security/office-365-security/mfi-smtp-auth-clients-report?view=o365-worldwide

    【讨论】:

      【解决方案2】:

      我通过为我的 Outlook365 帐户创建应用程序密码解决了这个问题。您可以按以下方式创建/管理应用密码。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-31
        • 1970-01-01
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-16
        相关资源
        最近更新 更多