数据库邮件体系结构

数据库邮件由以下主要组件构成:

  • 配置和安全组件

    数据库邮件将配置和安全信息存储在 msdb 数据库中。配置和安全对象可创建数据库邮件所用的配置文件和帐户。

  • 邮件处理组件

    msdb 数据库是邮件主机数据库,包含数据库邮件用于发送电子邮件的消息处理对象。这些对象包括 sp_send_dbmail 存储过程和保存邮件信息的数据结构。

  • 数据库邮件可执行文件

    数据库邮件可执行文件是一个外部程序,从 msdb 数据库中的队列读取邮件并将邮件发送到电子邮件服务器。

  • 日志记录和审核组件

    数据库邮件将日志记录信息记录在 msdb 数据库和 Microsoft Windows 应用程序事件日志中。

即便不具备对数据库邮件体系结构的全面了解,您也能够有效地使用数据库邮件。但是,了解构成数据库邮件的组件以及组件之间如何交互将有助于您设计应用程序和解决可能出现的任何问题。

下图简要介绍了数据库邮件体系结构。

msdb 将消息发送至 SMTP 邮件服务器

数据库邮件的设计基于使用 Service Broker 技术的排队体系结构。当用户执行 sp_send_dbmail 时,存储过程将向邮件队列中插入一项,并创建一条包含该电子邮件信息的记录。在邮件队列中插入新项将启动数据库邮件外部进程 (DatabaseMail.exe)。该外部进程会读取电子邮件的信息并将电子邮件发送到相应的一台或多台电子邮件服务器。该外部进程还会在状态队列中插入一项,来指示发送操作的结果。在状态队列中插入新项将启动内部存储过程,该过程将更新电子邮件信息的状态。除存储已发送(或未发送)的电子邮件信息外,数据库邮件还在系统表中记录所有电子邮件的附件。数据库邮件视图提供了供排除故障使用的邮件状态,使用存储过程可以对数据库邮件队列进行管理。

只有 msdb 数据库中的 DatabaseMailUserRole 的成员可以执行 sp_send_dbmail