Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Este artigo descreve como verificar o status da mensagem de email enviada usando o Database Mail no SQL Server usando o Transact-SQL.
- O Database Mail mantém cópias de mensagens de email de saída e as exibe nas exibições
sysmail_allitems,sysmail_sentitems,sysmail_unsentitems,sysmail_faileditemsdo banco de dadosmsdb. - O programa externo do Database Mail registra a atividade e exibe o log por meio do Log de Eventos de Aplicativo do Windows e da exibição
sysmail_event_logno banco de dadosmsdb. - São quatro os status possíveis das mensagens de email: sent(enviada), unsent(não enviada), retrying(tentando novamente) e failed(falhou).
Para verificar o status de uma mensagem de email, execute uma consulta no modo de exibição do sistema msdb.dbo.sysmail_event_log.
Use Transact-SQL para exibir o status do email enviado usando o Database Mail
Selecione a partir da tabela
sysmail_allitems, especificando as mensagens de interesse através demailitem_idousent_status.Para verificar o status retornado do programa externo para as mensagens de e-mail, associe
sysmail_allitemsà visualização emsysmail_event_logna colunamailitem_id.Por padrão, o programa externo não registra informações sobre mensagens enviadas com êxito. Para registrar todas as mensagens, defina o nível de log como detalhado na página Configurar Parâmetros do Sistema do Assistente para Configuração do Database Mail.
O exemplo a seguir lista informações sobre todas as mensagens de email enviadas a danw que o programa externo não conseguiu enviar com êxito. A instrução lista o assunto, a data e a hora que o programa externo falhou em enviar a mensagem, além da mensagem de erro do log do 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