Se você estiver tentando enviar e-mail usando o Database Mail no SQL Server, mas não conseguir enviar, verifique o
sysmail_event_log
view para ver por que falhou. O
sysmail_event_log
view retorna uma linha para cada mensagem do Windows ou SQL Server retornada pelo sistema Database Mail. Por “mensagem”, não me refiro à mensagem de correio real. Quero dizer uma mensagem como a mensagem de erro que explica por que o correio falhou. Você também pode usar o
sysmail_configure_sp
procedimento armazenado para determinar quais tipos de mensagens são registradas. Exemplo
Aqui está um exemplo para demonstrar como usar
sysmail_event_log
para retornar todas as mensagens. SELECT * FROM msdb.dbo.sysmail_event_log;
No meu sistema, isso retorna muitos dados para mostrar aqui, mas aqui está novamente para mostrar uma mensagem retornada.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Resultado (usando saída 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
Eu usei a saída vertical neste exemplo para que você não precise rolar para os lados.
Verifique seu nível de registro
Você pode usar o
sysmail_help_configure_sp
procedimento armazenado para verificar quais tipos de mensagens são registradas. Exemplo:
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 | +--------------+--------------+------------------------------------------------------------------------------+
No meu caso, o
LoggingLevel
é 2
, que é o valor padrão. Essa configuração registra erros, avisos e mensagens informativas. Alterar seu nível de registro
Você pode usar o
sysmail_configure_sp
procedimento armazenado para alterar seu nível de log. Especificamente, você pode escolher um
LoggingLevel
de 1
, 2
, ou 3
. Estes registram o seguinte:
- Somente erros.
- Erros, avisos e mensagens informativas (padrão).
- Erros, avisos, mensagens informativas, mensagens de sucesso e mensagens internas adicionais.
Se você estiver solucionando um problema, talvez queira alterar temporariamente seu nível de registro para 3.
Aqui está um exemplo de como alterar o nível de registro para
3
. EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Depois de executar isso, posso verificar meu
LoggingLevel
novamente com o sysmail_help_configure_sp
procedimento armazenado. 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 | +--------------+--------------+------------------------------------------------------------------------------+