Compartir a través de


Correo electrónico de base de datos: correo en cola, no entregado

Se aplica a:SQL ServerAzure SQL Managed Instance

En este artículo se describe cómo solucionar un problema en el que los mensajes de correo electrónico del Correo electrónico de base de datos se ponen en cola correctamente, pero los mensajes no se entregan.

Diagnóstico del problema

El programa externo Correo electrónico de base de datos registra la actividad de correo electrónico en la msdb base de datos.

  1. En primer lugar, para confirmar que Database Mail está habilitado, use Database Mail XPs (opción de configuración del servidor) del procedimiento almacenado del sp_configure sistema, como se muestra en el siguiente ejemplo:

    EXEC sp_configure 'show advanced', 1;  
    RECONFIGURE; 
    EXEC sp_configure; 
    GO
    
  2. A continuación, ejecute la siguiente instrucción en la msdb base de datos para comprobar el estado de la cola de correo:

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

    Para obtener una explicación detallada de las columnas, vea sysmail_help_queue_sp (Transact-SQL).

  3. Compruebe la sysmail_event_log vista para ver la actividad. La vista debe contener una entrada que indique que se ha iniciado el programa externo de Correo electrónico de base de datos. Si no hay ninguna entrada en la sysmail_event_log vista, vea el síntoma Mensajes en cola, Sin entradas en sysmail_event_log.

  4. Si hay errores en la sysmail_event_log vista, solucione el error específico. Compruebe la sysmail_allitems vista para ver el estado de los mensajes.

Estado del mensaje: no enviado

El estado de no enviado indica que el programa externo de correo de base de datos aún no ha procesado el mensaje de correo electrónico.

Es posible que el programa externo correo electrónico de base de datos se haya retrasado en el procesamiento de mensajes; la velocidad a la que el programa externo procesa los mensajes depende de las condiciones de red, el tiempo de espera de reintento, el volumen de mensajes y la capacidad del servidor SMTP. Si el problema continúa, pruebe a utilizar más de un perfil para distribuir los mensajes entre más de un servidor SMTP. Revise la carga de correo electrónico enviada desde SQL Server para comprobar que los correos electrónicos enviados son válidos y previstos.

Compruebe la fecha de notificación más reciente de los mensajes entregados satisfactoriamente. Si la última entrega correcta se produjo hace algún tiempo, verifique la sysmail_event_log vista para asegurarse de que Service Broker inició correctamente el programa externo. Si el último intento no ha iniciado el programa externo, compruebe que el Programa externo de Correo electrónico de base de datos está ubicado en el directorio correcto, y que la cuenta de servicio de SQL Server dispone del permiso necesario para ejecutar el ejecutable. Compruebe el registro de eventos de la aplicación de Windows para ver si hay errores relacionados con correo electrónico de base de datos.

Nota:

Para eliminar mensajes antiguos sin enviar, espere hasta que los mensajes no entregables sean los mensajes más antiguos de la cola y, a continuación, use el procedimiento almacenado del sistema msdb.dbo.sysmail_delete_mailitems_sp para eliminarlos.

Estado del mensaje: reintentando

Un estado de reintento indica que el Correo electrónico de base de datos intentó entregar el mensaje al servidor SMTP, pero no pudo hacerlo. Normalmente esto se debe a una interrupción de la red, a un error del servidor SMTP o a que la cuenta de Correo electrónico de base de datos no se ha configurado correctamente. El mensaje debería tener éxito o fallar y publicar un mensaje en el registro de eventos de la aplicación en Windows.

Estado del mensaje: enviado

Un estado de enviado indica que el programa externo de Correo electrónico de base de datos ha entregado satisfactoriamente el mensaje de correo electrónico al servidor SMTP.

Si el mensaje no llegó a su destino, el servidor SMTP aceptó el mensaje de Correo electrónico de base de datos, pero no entregó el mensaje al destinatario final. Compruebe los registros del servidor SMTP o póngase en contacto con el administrador del servidor SMTP. También puede probar el servidor de correo SMTP mediante otro cliente, como Outlook Express.

Estado del mensaje: error

Un estado de error indica que el programa externo de Correo electrónico de base de datos no ha entregado el mensaje al servidor SMTP.

En este caso, la msdb.dbo.sysmail_event_log vista del sistema contiene la información detallada del programa externo. Para obtener una consulta de ejemplo que une sysmail_faileditems y sysmail_event_log para recuperar mensajes de error detallados, vea Comprobar el estado de los mensajes de correo electrónico enviados con correo de base de datos. Las causas más habituales de los errores son las direcciones de destino incorrectas o problemas de red que impiden al programa externo alcanzar una o más cuentas de conmutación por error. Los problemas en el servidor SMTP también pueden ocasionar el rechazo de correo por parte del servidor. Mediante el Asistente para configuración de Correo electrónico de base de datos, cambie el Nivel de registro a Detallado y envíe un correo de prueba para investigar el punto de error.

Paso siguiente