Поделиться через


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

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

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

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

  • Чтобы просмотреть состояние электронной почты, отправленной с помощью компонента Database Mail, используйте 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