Структура компонента 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.
Компонент Database Mail спроектирован по принципу очереди на основе технологий компонента Service Broker. Когда пользователь выполняет хранимую процедуру sp_send_dbmail, в почтовую очередь вставляется новый элемент и создается запись, содержащая сообщение электронной почты. При вставке новой записи в почтовую очередь запускается внешний процесс компонента Database Mail (DatabaseMail.exe). Внешний процесс считывает данные электронной почты и отправляет сообщение электронной почты соответствующему серверу или серверам электронной почты. Внешний процесс вставляет элемент в очередь состояния в соответствии с результатами операции отправки. При вставке новой записи в очередь состояний запускается внутренняя хранимая процедура, которая выполняет обновление состояния электронного сообщения. Кроме сохранения отправленного (или неотправленного) сообщения электронной почты, компонент Database Mail также записывает в системные таблицы все вложения. Представления компонента Database Mail содержат сведения о состоянии сообщений для диагностики и устранения неполадок в работе, а хранимые процедуры позволяют администрировать очередь компонента Database Mail.
Только члены роли DatabaseMailUserRole в базе данных msdb могут выполнять sp_send_dbmail.
См. также