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

8

目前我们有一个网页表单用于发送电子邮件,在公司迁移至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]期间未经身份验证以发送匿名邮件” 在下面链接的文章中。

使用System.Net.Mail通过Exchange Online(Office 365)发送SMTP电子邮件

我的代码如下所示。

    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个回答

2
我通过为我的Outlook365帐户创建应用程序密码来解决了这个问题。您可以按照以下步骤创建/管理应用程序密码。
1. 进入“我的账户”>>“安全和隐私”>>“附加安全验证”>>“创建和管理应用程序密码”
2. 创建一个应用程序密码并在您的代码中使用它。希望这可以解决您的问题。
"最初的回答":我通过为我的Outlook365帐户创建应用程序密码来解决了这个问题。您可以按照以下步骤创建/管理应用程序密码。
1. 进入“我的账户”>>“安全和隐私”>>“附加安全验证”>>“创建和管理应用程序密码”
2. 创建一个应用程序密码并在您的代码中使用它。希望这可以解决您的问题。

1
要启用应用程序密码,您必须在帐户上启用两步验证,并且管理员(如果您的帐户属于组织)必须允许在帐户(或组织)中使用应用程序密码。我不是365管理员,也不知道所有设置。
但是,我们遇到了类似的问题,发件人帐户没有为SMTP AUTH启用“现代身份验证”设置。 请注意,这已经运作良好很长一段时间,突然停止了(不确定Microsoft是否在2021年2月底进行了一些安全加固)。
Outlook等(客户端?)已启用Modern Authentication, 但未启用“SMTP AUTH”,“IMAP”和“POP” (我认为这是“默认值”,建议不要启用Modern Authentication,除非您需要它。
请参阅下面的两篇文章。

https://learn.microsoft.com/zh-cn/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission 几乎所有现代电子邮件客户端(例如Outlook、Outlook on the web、iOS Mail、Outlook for iOS和Android等)连接到Office 365或Microsoft 365中的Exchange Online邮箱时,不使用SMTP AUTH发送电子邮件消息。

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

还需要了解的是,将列出“smtp auth客户端”的数量。 https://learn.microsoft.com/zh-cn/microsoft-365/security/office-365-security/mfi-smtp-auth-clients-report?view=o365-worldwide


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接