Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Managed Instance
En este artículo se describe cómo comprobar el estado del mensaje de correo electrónico enviado mediante correo electrónico de base de datos en SQL Server mediante Transact-SQL.
- El Correo electrónico de base de datos mantiene copias de los mensajes de correo electrónico salientes y los muestra en las vistas
sysmail_allitems
,sysmail_sentitems
,sysmail_unsentitems
,sysmail_faileditems
de la base de datosmsdb
. - El programa externo de Correo Electrónico de la Base de Datos registra la actividad y muestra el registro a través del Registro de Eventos de Aplicación de Windows y la vista
sysmail_event_log
en la base de datosmsdb
. - Los mensajes de correo electrónico tienen cuatro posibles estados: enviado, no enviado, reintentandoy error.
Para comprobar el estado de un mensaje de correo electrónico, ejecute una consulta en la vista del msdb.dbo.sysmail_event_log
sistema.
Use Transact-SQL para ver el estado del correo electrónico enviado mediante correo electrónico de base de datos
Seleccione en la
sysmail_allitems
tabla y especifique los mensajes de interés pormailitem_id
osent_status
.Para comprobar el estado devuelto desde el programa externo para los mensajes de correo electrónico, une
sysmail_allitems
con la vistasysmail_event_log
en la columnamailitem_id
.De forma predeterminada, el programa externo no registra información acerca de los mensajes que se enviaron correctamente. Para registrar todos los mensajes, establezca el nivel de registro en detallado mediante la página Configurar parámetros del sistema del Asistente para configuración de Correo electrónico de base de datos.
En el siguiente ejemplo se muestra información acerca de los mensajes de correo electrónico enviados a danw
que el programa externo no ha podido enviar correctamente. La instrucción incluye el asunto, la fecha y la hora en que el programa externo no pudo enviar el mensaje, así como el mensaje de error del registro de Correo electrónico de base de datos.
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