在 Amazon RDS for SQL Server 上使用数据库邮件 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Amazon RDS for SQL Server 上使用数据库邮件

您可以使用数据库邮件从 Amazon RDS on SQL Server 数据库实例向用户发送电子邮件。这些消息可以包含文件和查询结果。数据库邮件包括以下组件:

  • 配置和安全对象 – 这些对象可以创建配置文件和账户,并存储在 msdb 数据库中。

  • 消息收发对象 – 这些对象包括用于发送消息的 sp_send_dbmail 存储过程以及保存有关消息信息的数据结构。相关内容均存储在 msdb 数据库中。

  • 日志记录和审计对象 – 数据库邮件将日志记录信息写入 msdb 数据库和 Microsoft Windows 应用程序事件日志中。

  • 数据库邮件可执行文件DatabaseMail.exe 读取 msdb 数据库中的队列并发送电子邮件。

RDS 在 Web 版、标准版和企业版上支持所有 SQL Server 版本的数据库邮件。

限制

以下限制适用于在 SQL Server 数据库实例上使用数据库邮件:

  • SQL Server 精简版不支持数据库邮件。

  • 不支持修改数据库邮件配置参数。如欲查看预设(默认)值,请使用 sysmail_help_configure_sp 存储过程。

  • 不完全支持文件附件。有关更多信息,请参阅“使用文件附件”。

  • 文件附件的最大大小为 1 MB。

  • 数据库邮件需要对多可用区数据库实例进行额外配置 有关更多信息,请参阅“多可用区部署的注意事项”。

  • 不支持将 SQL Server Agent 配置为向预定义运算符发送电子邮件。

数据库邮件的 Amazon RDS 存储过程和函数

Microsoft 提供存储过程用于使用数据库邮件,例如创建、列出、更新和删除帐户和配置文件。此外,RDS 还提供了数据库邮件的存储过程和函数,如下表所示。

过程/功能 描述
rds_fn_sysmail_allitems 显示已发送的消息,包括其他用户提交的消息。
rds_fn_sysmail_event_log 显示事件,包括其他用户提交的消息事件。
rds_fn_sysmail_mailattachments 显示附件,包括其他用户提交的消息附件。
rds_sysmail_control 启动和停止邮件队列(DatabaseMail.exe 进程)。
rds_sysmail_delete_mailitems_sp 从数据库邮件内部表中删除所有用户发送的电子邮件。

使用文件附件

在 SQL Server 上,来自 RDS 的数据库邮件消息不支持以下文件扩展名:.ade、.adp、.apk、.appx、.appxbundle、.bat、.bak、.cab、.chm、.cmd、.com、.cpl、.dll、.dmg、.exe、.hta、.inf1、.ins、.isp、.iso、.jar、.job、.js、.jse、.ldf、.lib、.lnk、.mde、.mdf、.msc、.msi、.msix、.msixbundle、.msp、.mst、.nsh、.pif、.ps、.ps1、.psc1、.reg、.rgs、.scr、.sct、.shb、.shs、.svg、.sys、.u3p、.vb、.vbe、.vbs、.vbscript、.vxd、.ws、.wsc、.wsf 和.wsh。

数据库邮件使用当前用户的 Microsoft Windows 安全环境来控制对文件的访问。使用 SQL Server 身份验证登录的用户无法使用带 @file_attachments 存储过程的 sp_send_dbmail 参数来附加文件。Windows 不允许 SQL Server 从一台远程计算机向另一台远程计算机提供凭证。因此,当命令从运行 SQL Server 的计算机以外的计算机运行时,数据库邮件无法从网络共享中的附加文件。

但是,您可以使用 SQL Server Agent 作业来附加文件。有关 SQL Server Agent 的详细信息,请参阅 Microsoft 文档中的 使用 SQL Server Agent for Amazon RDSSQL Server Agent

多可用区部署的注意事项

在多可用区数据库实例上配置数据库邮件时,配置不会自动传播到辅助节点。我们建议将多可用区实例转换为单可用区实例,配置数据库邮件,然后将数据库实例转换回多可用区实例。然后,主节点和辅助节点都具有数据库邮件配置。

如果您从配置了数据库邮件的多可用区实例中创建只读副本,则副本将继承配置,但不会向 SMTP 服务器提供密码。使用密码更新数据库邮件账户。

删除 SMTP(端口 25)限制

默认情况下,Amazon 会阻止 RDS for SQL Server 数据库实例的 SMTP(端口 25)上的出站流量。这样做是为了根据弹性网络接口所有者的策略来阻止垃圾邮件。如果需要,您可以删除此限制。有关更多信息,请参阅如何删除 Amazon EC2 实例或 Lambda 函数的端口 25 的限制?