Si está intentando enviar un correo electrónico utilizando el correo electrónico de la base de datos en SQL Server, pero no se puede enviar, puede verificar el sysmail_event_log
view para ver por qué falló.
El sysmail_event_log
view devuelve una fila por cada mensaje de Windows o SQL Server devuelto por el sistema de Correo electrónico de base de datos. Por "mensaje", no me refiero al mensaje de correo real. Me refiero a un mensaje como el mensaje de error que explica por qué falló el correo.
También puede usar el sysmail_configure_sp
procedimiento almacenado para determinar qué tipos de mensajes se registran.
Ejemplo
Aquí hay un ejemplo para demostrar cómo usar sysmail_event_log
para devolver todos los mensajes.
SELECT * FROM msdb.dbo.sysmail_event_log;
En mi sistema, esto devuelve demasiados datos para mostrar aquí, pero aquí está nuevamente para mostrar un mensaje que se devuelve.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Resultado (usando salida vertical):
log_id | 2 event_type | error log_date | 2020-08-24 02:40:53.317 description | The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-08-24T02:40:52). Exception Message: Could not connect to mail server. (No connection could be made because the target machine actively refused it 127.0.0.1:25).) process_id | 68 mailitem_id | 1 account_id | NULL last_mod_date | 2020-08-24 02:40:53.317 last_mod_user | sa
Usé la salida vertical en este ejemplo para que no tengas que desplazarte hacia los lados.
Comprueba tu nivel de registro
Puede usar el sysmail_help_configure_sp
procedimiento almacenado para comprobar qué tipos de mensajes se registran.
Ejemplo:
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Resultado:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
En mi caso, el LoggingLevel
es 2
, que es el valor predeterminado. Esta configuración registra errores, advertencias y mensajes informativos.
Cambie su nivel de registro
Puede usar el sysmail_configure_sp
procedimiento almacenado para cambiar su nivel de registro.
Específicamente, puede elegir un LoggingLevel
de 1
, 2
, o 3
.
Estos registran lo siguiente:
- Solo errores.
- Errores, advertencias y mensajes informativos (predeterminado).
- Errores, advertencias, mensajes informativos, mensajes de éxito y mensajes internos adicionales.
Si está solucionando un problema, es posible que desee cambiar temporalmente su nivel de registro a 3.
Aquí hay un ejemplo de cómo cambiar el nivel de registro a 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Después de ejecutar eso, puedo verificar mi LoggingLevel
de nuevo con el sysmail_help_configure_sp
procedimiento almacenado.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Resultado:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+