Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
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 das mensagens de e-mail de saída e exibe-as nas visualizações
sysmail_allitems
,sysmail_sentitems
,sysmail_unsentitems
,sysmail_faileditems
da base de dadosmsdb
. - O programa externo do Database Mail regista a atividade e exibe o registo através do Registo de Eventos da Aplicação do Windows e da vista
sysmail_event_log
msdb
no banco de dados. - As mensagens de email têm um dos quatro status possíveis: enviadas, não enviadas , de nova tentativa e com falha .
Para verificar o estado de uma mensagem de correio eletrónico, execute uma consulta na vista do msdb.dbo.sysmail_event_log
sistema.
Use o Transact-SQL para exibir o status do email enviado usando o Database Mail
Selecione na tabela
sysmail_allitems
, especificando as mensagens de interesse pormailitem_id
ousent_status
.Para verificar o estado retornado do programa externo para as mensagens de email, juntem
sysmail_allitems
asysmail_event_log
para ver na colunamailitem_id
.Por padrão, o programa externo não registra informações sobre mensagens que foram enviadas com êxito. Para registar todas as mensagens, defina o nível de registo como detalhado, utilizando a página Configurar Parâmetros do Sistema do Assistente de Configuração do Database Mail.
O exemplo a seguir lista informações sobre quaisquer mensagens de email enviadas para danw
que o programa externo não pôde enviar com êxito. A instrução lista o assunto, a data e a hora em que o programa externo não conseguiu enviar a mensagem e a 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