SQL Server 数据库邮件不会向www.example.com发送电子邮件smtp.office365.com

r3i60tvu  于 2022-11-21  发布在  其他
关注(0)|答案(3)|浏览(1611)

我正在使用SQL Server 2017,尝试设定Database Mail。如果我使用smtp.gmail.com,Database Mail会正常运作。但是,客户端正在使用smtp.office365.com,我无法让它运作。我收到的错误是:
由于邮件服务器故障,无法将邮件发送给收件人。”
我知道要传递的凭据/配置信息起作用,因为我有一个C#应用程序可以使用相同的信息发送电子邮件。对于我使用的数据库邮件配置:

  1. Basic Authentication
  2. PORT = 587
  3. Use SSL = True
  4. Server Name = smtp.office365.com

..是的,我用于身份验证的“用户名”与“电子邮件地址”条目匹配。
有人知道为什么smtp.office365.com不能在数据库邮件中工作吗?
另一个注意-每隔一段时间它确实工作-我只是不能让它工作的大部分时间。

d7v8vwbk

d7v8vwbk1#

问题诊断

首先通过SSMS使用SQL Server〉管理〉数据库邮件(右键单击)〉查看数据库邮件日志诊断DatabaseMail问题。您可能看到的错误消息示例包括:

  1. The mail could not be sent to the recipients because of the mail server failure. (...
  2. Exception Message: Cannot send mails to mail server. (
  3. Failure sending mail.
  4. ).
  5. )

不幸的是,这是一个非常常见的错误消息。它可能意味着您的本地服务器、.NET Framework或DatabaseMail.exe进程本身尚未配置为启用TLS 1.2协议,因此无法使用TLS 1.0或TLS 1.1协议进行连接。

  1. The mail could not be sent to the recipients because of the mail server failure. (...
  2. Exception Message: Cannot send mails to mail server. (
  3. Error in processing. The server response was: 5.7.3 STARTTLS is required to send mail [FOO.BAR.prod.outlook.com]
  4. ).
  5. )

这表示尚未勾选“此服务器需要安全联机(SSL)”。必须勾选此选项,才能启用STARTTLS命令,建立传送SMTP基本验证的安全通信通道。

  1. The mail could not be sent to the recipients because of the mail server failure. (...
  2. Exception Message: Cannot send mails to mail server. (
  3. The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 Client not authenticated to send mail. Error: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://aka.ms/smtp_auth_disabled for more information. [FOO.BAR.prod.outlook.com]
  4. ).
  5. )

这意味着基本身份验证详细信息中使用的Office365邮箱尚未启用SMTP AUTH属性。

SQL Server的数据库邮件与smtp.office365.com要求

1.必须在发送帐户的邮箱上启用SMTP AUTH。
How to set up a multifunction device or application to send email using Microsoft 365 or Office 365表示:
您还必须验证是否为正在使用的邮箱启用了SMTP AUTH。对于2020年1月之后创建的组织,SMTP AUTH已禁用,但可以为每个邮箱启用。有关详细信息,请参阅Enable or disable authenticated client SMTP submission (SMTP AUTH) in Exchange Online
请与组织的Exchange管理员联系以启用此设置,或者,如果您自己具有足够的访问权限,则可以通过PowerShell执行此操作:

  1. PS> Import-Module ExchangeOnlineManagement
  2. PS> Connect-ExchangeOnline -UserPrincipalName administrative_user@your_domain.com
  3. PS> Get-CASMailbox -Identity sending_mailbox_user@your_domain.com
  4. Name ActiveSyncEnabled OWAEnabled PopEnabled ImapEnabled MapiEnabled SmtpClientAuthenticationDisabled
  5. ---- ----------------- ---------- ---------- ----------- ----------- --------------------------------
  6. sending_mailbox_user True True True True True
  7. PS> Set-CASMailbox -Identity sending_mailbox_user@your_domain.com -SmtpClientAuthenticationDisabled $false

1.需要TLS 1.2。
How to set up a multifunction device or application to send email using Microsoft 365 or Office 365也表示:
传输层安全性(TLS):您的设备必须能够使用TLS版本1.2及更高版本。

  • DatabaseMail.exe是为.NET Framework 3.5构建的,但您需要安装支持TLS 1.2(.NET Framework 4.5.2或更高版本)的.NET Framework。
  • TLS 1.2客户端协议应在注册表中的计算机级别启用
  1. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
  2. "DisabledByDefault"=dword:00000000
  3. "Enabled"=dword:00000001
  • 应在注册表中为.NET Framework 4.x启用TLS 1.2客户端协议
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
  2. "SchUseStrongCrypto"=dword:00000001
  3. [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
  4. "SchUseStrongCrypto"=dword:00000001
  • DatabaseMail.exe.config文件中应包含适当的supportedRuntime,例如:安装了Microsoft .NET框架4.5.2:
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <appSettings>
  4. <add key="DatabaseServerName" value="." />
  5. <add key="DatabaseName" value="msdb" />
  6. </appSettings>
  7. <startup>
  8. <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  9. </startup>
  10. </configuration>

1.透过SSMS中的Database Mail设定,适当地设定传送账户:

  • 伺服器名称:smtp.office365.com
  • 连接埠号码:587(首选,或25)
  • 此服务器需要安全连接(SSL):必须勾选(启用STARTTLS)
  • SMTP身份验证:
  • 基本身份验证(已选择)
  • 用户名:发送邮箱用户@your_domain.com
  • 密码:您的办公室365密码
  • 确认密码:您的办公室365密码

参考文献:

展开查看全部
vd8tlhqk

vd8tlhqk2#

您必须在以下位置添加一个值为1的RegEdit DWORD SchUseStrongCrypto

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319

这样就能解决问题。

vm0i2vca

vm0i2vca3#

我找到了两种方法...
1.微软给了我们一个奇怪的选择:使用本地SMTP服务器
https://www.opwernby.com/Article.asp?id=DBMail365
1.我喜欢这样,对我来说很简单
https://www.opwernby.com/Article.asp?id=DBMail365

相关问题