SQL 来自 Azure VM 的数据库邮件

SQL Database Mail from Azure VM

我们正在将我们的系统从专用托管迁移到 Azure。此过程的一部分是数据馈送系统,该系统会在数据馈送出现问题时向客户和我们的系统管理员发送电子邮件。

我们使用 SQL 数据库邮件和在盒子上设置的简单 IIS 6.0 SMTP 服务器。然后在我们的 SQL 存储过程中,我们调用 sp_send_dbmail 来发送消息。

我们已尝试在我们的 Azure 虚拟机上复制它,但电子邮件似乎没有通过。 SMTP 服务器已安装和设置,与原来的专用盒子相同。数据库邮件配置也是一样的。我们的配置文件和帐户具有相同的名称,因此不必更改任何引用它们的迁移代码。我什至无法让 "Send Test E-mail..." 从 SSMS 中的数据库邮件节点工作。

我在 Azure 中是否缺少某些东西,需要打开的端口或要设置的端点?我们正在运行 Windows 2016 数据中心虚拟机,其中 SQL Server 2016。

事实证明,问题是 SQL Server 2016 不再需要安装 .NET 3.5,但一些底层组件仍在使用它。

查看这篇文章: https://joeydantoni.com/2016/07/27/sql-server-2016-database-mail-not-working/

我无法使用文章中的确切解决方案,但以下是对我有用的解决方案。

创建文件:
C:\Program Files\Microsoft SQL Server\MSSQL13.REPLINKDEV\MSSQL\Binn\DatabaseMail.exe.config

将其放入文件中:

<?xml version="1.0"?>
  <configuration>
      <startup useLegacyV2RuntimeActivationPolicy="true">
          <supportedRuntime version="v4.0"/>
          <supportedRuntime version="v2.0.50727"/>
      </startup>
  </configuration>

重启SQL服务器

如果您可以在同一文件夹中打开 DatabaseMail.exe,则可以判断它是否正常工作。如果不是,则很可能是配置文件有问题。