Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: 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