Проверка состояния сообщений электронной почты, отправленных при помощи компонента Database Mail

Область применения: SQL Server Управляемый экземпляр SQL Azure

В этом разделе описывается, как проверить состояние сообщения электронной почты, отправленного с помощью компонента Database Mail в SQL Server с помощью Transact-SQL.

  • Перед началом:

  • Чтобы просмотреть состояние электронной почты, отправленной с помощью компонента Database Mail, using: Transact-SQL

Перед началом

Компонент Database Mail хранит копии исходящих сообщений электронной почты и отображает их в представлениях sysmail_allitems, sysmail_sentitems, sysmail_unsentitemsи sysmail_faileditems базы данных msdb . Внешняя программа компонента Database Mail протоколирует активность и отображает журнал при помощи компонента Windows Application Event Log и представления sysmail_event_log базы данных msdb . Для проверки состояния сообщений электронной почты запустите запрос для данного представления. У сообщений электронной почты может быть одно из следующих четырех состояний: отправлено, не отправлено, попытка отправкии ошибка при отправке.

Использование Transact-SQL

Проверка состояния сообщений электронной почты, отправленных компонентом Database Mail

  1. Выберите из таблицы sysmail_allitems важные сообщения, используя поля mailitem_id или sent_status.

  2. Чтобы проверить состояние сообщений электронной почты, возвращенных из внешней программы, соединение sysmail_allitems с представлением sysmail_event_log столбца mailitem_id , как показано в следующем разделе.

    По умолчанию внешняя программа не протоколирует сведения об успешно посланных сообщениях. Для протоколирования всех сообщений установите детализированный уровень ведения журнала на странице Установка параметров системы окна Мастер настройки компонента Database Mail.

Пример (Transact-SQL)

В следующем примере приводятся данные о любых сообщениях электронной почты, отправленных danw , которые внешняя программа не смогла успешно отправить. Инструкция выдает тему, дату и время попытки отправки сообщения, при отправке которого внешней программой произошла ошибка, а также текст сообщения об ошибке из журнала компонента Database Mail.

USE msdb ;  
GO  
  
-- Show the subject, the time that the mail item row was last  
-- modified, and the log information.  
-- Join sysmail_faileditems to sysmail_event_log   
-- on the mailitem_id column.  
-- In the WHERE clause list items where danw was in the recipients,  
-- copy_recipients, or blind_copy_recipients.  
-- These are the items that would have been sent  
-- to danw.  
  
SELECT items.subject,  
    items.last_mod_date  
    ,l.description FROM dbo.sysmail_faileditems as items  
INNER JOIN dbo.sysmail_event_log AS l  
    ON items.mailitem_id = l.mailitem_id  
WHERE items.recipients LIKE '%danw%'    
    OR items.copy_recipients LIKE '%danw%'   
    OR items.blind_copy_recipients LIKE '%danw%'  
GO  

См. также

Ведение журнала и аудит компонента Database Mail