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

En este se tema describe cómo solucionar problemas en los que los mensajes de correo electrónico se colocan satisfactoriamente en la cola, pero no se entregan.

Diagnosticar el problema

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

Primero, para confirmar que Correo electrónico de base de datos está habilitado, utilice la Database Mail XPs (opción) del procedimiento almacenado del sistema sp_configure.

A continuación, ejecute la siguiente instrucción en la base de datos msdb para comprobar el estado de la cola de correo:

sysmail_help_queue_sp @queue_type = 'Mail' ;

Para obtener una explicación detallada de las columnas, vea la sección "Conjunto de resultados" en sysmail_help_queue_sp (Transact-SQL).

Compruebe la vista sysmail_event_log para conocer el nivel de 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 vista sysmail_event_log, consulte el síntoma Mensajes en cola, no hay entradas en sysmail_event_log. Si hay errores en la vista sysmail_event_log, solucione este error concreto.

Si hay entradas en la vista sysmail_event_log, compruebe la vista sysmail_allitems para conocer el estado de los mensajes.

Estado del mensaje: no enviado

Un estado de no enviado indica que el programa externo de Correo electrónico de base de datos todavía no ha procesado el mensaje de correo electrónico. Es posible que el programa externo de Correo electrónico de base de datos se haya retrasado en el procesamiento de los mensajes; la velocidad a la que el programa externo procesa los mensajes depende de las condiciones de la 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.

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, revise la vista sysmail_event_log para comprobar que el programa externo fue iniciado satisfactoriamente por Service Broker. Si el último intento no inició 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 para SQL Server dispone del permiso necesario para ejecutar el ejecutable.

[!NOTA]

Para eliminar los mensajes antiguos no enviados, espere hasta que los mensajes que no se pueden entregar sean los más antiguos de la cola y, a continuación, utilice sysmail_delete_mailitems_sp para eliminarlos.

Estado del mensaje: reintentando

El estado reintentando indica que el Correo electrónico de base de datos ha intentado entregar el mensaje al servidor SMTP pero no ha podido 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. Finalmente, el mensaje debería entregarse o producir un error y publicar un mensaje en el registro de eventos.

Estado del mensaje: enviado

Un estado de enviado indica que el programa externo de Correo electrónico de base de datos entregó 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 entregó el mensaje al servidor SMTP. En este caso, la vista sysmail_event_log contiene la información detallada del programa externo. Para obtener un ejemplo de consulta que combina sysmail_faileditems y sysmail_event_log para recuperar mensajes de error detallados, vea Cómo comprobar el estado de los mensajes de correo electrónico enviados con Correo electrónico de base de datos (Transact-SQL). 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.