Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server Управляемый экземпляр SQL Azure
В этой статье описывается, как проверить состояние сообщения электронной почты, отправленного с помощью компонента Database Mail в SQL Server с помощью Transact-SQL.
- Database Mail сохраняет копии исходящих сообщений электронной почты и отображает их в представлениях
sysmail_allitems
,sysmail_sentitems
,sysmail_unsentitems
,sysmail_faileditems
базы данныхmsdb
. - Внешняя программа Database Mail ведет журнал активности и отображает журнал через журнал событий приложения Windows и представление
sysmail_event_log
в базе данныхmsdb
. - У сообщений электронной почты может быть одно из следующих четырех состояний: отправлено, не отправлено, попытка отправкии ошибка при отправке.
Чтобы проверить состояние сообщения электронной почты, выполните запрос в системном представлении msdb.dbo.sysmail_event_log
.
Используйте Transact-SQL для просмотра статуса электронной почты, отправленной с помощью Database Mail
Выберите из
sysmail_allitems
таблицы сообщения, которые вас интересуют, используяmailitem_id
илиsent_status
.Чтобы проверить состояние, возвращенное внешней программой для сообщений электронной почты, присоединитесь
sysmail_allitems
к просмотруsysmail_event_log
столбцаmailitem_id
.По умолчанию внешняя программа не протоколирует сведения об успешно посланных сообщениях. Для протоколирования всех сообщений установите детализированный уровень ведения журнала на странице Установка параметров системы окна Мастер настройки компонента Database Mail.
В следующем примере приводятся данные о любых сообщениях электронной почты, отправленных 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