Структура компонента Database Mail

Компонент Database Mail состоит из следующих основных компонентов.

  • Компоненты настройки и безопасности

    Компонент Database Mail хранит сведения о конфигурации и безопасности в базе данных msdb. Объекты настройки и безопасности создают профили и учетные записи, используемые компонентом Database Mail.

  • Компоненты обмена сообщениями

    База данных msdb выступает в качестве базы данных обслуживания почты и содержит объекты обмена сообщениями, которыми компонент Database Mail пользуется для отправки сообщений электронной почты. К ним относится хранимая процедура sp_send_dbmail и структуры данных, содержащие сведения о сообщениях.

  • Исполняемый файл компонента Database Mail

    Исполняемый файл компонента Database Mail является внешней программой, которая считывает из очереди в базе данных msdb и отправляет сообщения на серверы электронной почты.

  • Компоненты протоколирования и контроля

    Компонент Database Mail записывает данные протоколирования в базу данных msdb и в журнал событий приложений Microsoft Windows.

Для эффективной работы с компонентом Database Mail не обязательно понимать его структуру. Однако знание его компонентов и понимание их взаимодействия может помочь в проектировании приложений и устранении любых возможных неполадок.

На следующем рисунке показан обзор архитектуры компонента Database Mail.

msdb отправляет сообщения на почтовый SMTP-сервер

Компонент Database Mail спроектирован по принципу очереди на основе технологий компонента Service Broker. Когда пользователь выполняет хранимую процедуру sp_send_dbmail, в почтовую очередь вставляется новый элемент и создается запись, содержащая сообщение электронной почты. При вставке новой записи в почтовую очередь запускается внешний процесс компонента Database Mail (DatabaseMail.exe). Внешний процесс считывает данные электронной почты и отправляет сообщение электронной почты соответствующему серверу или серверам электронной почты. Внешний процесс вставляет элемент в очередь состояния в соответствии с результатами операции отправки. При вставке новой записи в очередь состояний запускается внутренняя хранимая процедура, которая выполняет обновление состояния электронного сообщения. Кроме сохранения отправленного (или неотправленного) сообщения электронной почты, компонент Database Mail также записывает в системные таблицы все вложения. Представления компонента Database Mail содержат сведения о состоянии сообщений для диагностики и устранения неполадок в работе, а хранимые процедуры позволяют администрировать очередь компонента Database Mail.

Только члены роли DatabaseMailUserRole в базе данных msdb могут выполнять sp_send_dbmail.