Database Mail: Email em fila, não entregue

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Este tópico descreve como solucionar o problema de mensagens de email enfileiradas com êxito, mas não entregues.

Diagnosticar o problema

O programa externo do Database Mail registra em log a atividade de email no banco de dados msdb.

Primeiro, para confirmar que o Database Mail está habilitado, use a Opção do Database Mail XPs do procedimento armazenado do sistema sp_configure, como no exemplo a seguir:

EXEC sp_configure 'show advanced', 1;  
RECONFIGURE; 
EXEC sp_configure; 
GO

Em seguida, execute a seguinte instrução no banco de dados msdb para verificar o status da fila de emails:

EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';

Para obter uma explicação detalhada das colunas, veja sysmail_help_queue_sp (Transact-SQL).

Verifique a exibição sysmail_event_log para observar a atividade. A exibição deve conter uma entrada declarando que o programa externo do Database Mail foi iniciado. Se não houver nenhuma entrada na exibição sysmail_event_log, confira o sintoma Mensagens na Fila, Nenhuma Entrada em sysmail_event_log. Se houver erros na exibição sysmail_event_log, solucione problemas do erro específico.

Se houver entradas na exibição sysmail_event_log, verifique a exibição sysmail_allitems quanto ao status das mensagens.

Status de mensagem não enviada

O status de não enviada indica que o programa externo do Database Mail ainda não processou a mensagem de email. O programa externo do Database Mail pode ter se atrasado no processamento das mensagens; a taxa com a qual o programa externo processa mensagens depende das condições da rede, do tempo limite de novas tentativas, do volume de mensagens e da capacidade do servidor SMTP. Se o problema persistir, considere usar mais de um perfil para distribuir mensagens entre mais de um servidor SMTP.

Verifique a data de modificação mais recente das mensagens entregues com êxito. Se a última entrega com êxito tiver ocorrido já há algum tempo, examine a exibição sysmail_event_log para verificar se o programa externo foi iniciado com êxito pelo Service Broker. Se a última tentativa não tiver iniciado o programa externo, verifique se o Programa Externo do Database Mail está localizado no diretório correto e se a conta de serviço do SQL Server tem permissão para executar o executável.

Observação

Para excluir mensagens antigas não enviadas, aguarde até que as mensagens não entregáveis sejam as mais antigas na fila e use sysmail_delete_mailitems_sp para excluí-las.

Status da mensagem tentando novamente

O status de tentando novamente indica que o Database Mail tentou entregar a mensagem ao servidor SMTP, mas não teve êxito. Normalmente, isso é causado por uma interrupção da rede, uma falha do servidor SMTP ou uma conta incorretamente configurada do Database Mail. A mensagem dever ter êxito ou falha e postar uma mensagem no log de eventos.

Status de mensagem enviada

O status de enviada indica que o programa externo do Database Mail teve êxito na entrega da mensagem de email ao servidor SMTP. Se a mensagem não chegar ao seu destino, é porque o servidor SMTP a aceitou do Database Mail, mas não a entregou ao destinatário final. Verifique os logs do servidor SMTP ou contate o administrador do mesmo. Você também pode testar o servidor de email SMTP usando outro cliente, como o Outlook Express.

Status de mensagem de falha

O status de falha indica que o programa externo do Database Mail não pôde entregar a mensagem ao servidor SMTP. Neste caso, a exibição sysmail_event_log conterá as informações detalhadas do programa externo. Para uma consulta de exemplo que une sysmail_faileditems e sysmail_event_log para recuperar mensagens de erro detalhadas, veja Verificar o status de mensagens de email enviadas com o Database Mail. As causas mais comuns de falha são endereço de destino incorreto ou problemas de rede que impedem o programa externo de acessar uma ou mais contas de failover. Problemas no servidor SMTP também podem fazê-lo rejeitar emails. Usando o Assistente para Configuração do Database Mail, altere o Nível de Registros em Log para Detalhado e envie um email de teste para investigar o ponto de falha.

Confira também