Configurar WordPress para enviar emails por SMTP

El envío de emails en WordPress es un tema bastante complicado, ya que se realiza por PHPMail por el simple hecho de que simplifica mucho la configuración para usuarios principiantes que instalan WP.

Esto ocurre también con el wp-cron.php, que no es la solución ideal para ejecutar tareas programadas en WordPress, pero que es así para evitar darles instrucciones a usuarios principiantes sobre cómo añadir las tareas programadas al CRON de Linux.

Estas dos "tonterías", junto con el API Heartbeat (admin-ajax.php), son las "culpables" de que en WordPress los usuarios puedan crear una web de una forma tan fácil y tan asistida, con una curva de aprendizaje relativamente simple y sin tener que conocer cómo funcionan las tareas programadas o cómo se envían los emails nada más instalar el CMS.

wordpress smtp correo electrónico

Como he dicho, la forma que tiene WordPress de forma nativa para enviar emails no es la ideal, pero en la gran mayoría de casos funciona bien y es más que suficiente.

Sin embargo, cuando nuestra web es algo más que un blog o web corporativa, puede ser necesario configurar nuestro WP para que los correos electrónicos salgan a través de un relay SMTP externo.
Los relay SMTP externos permiten enviar grandes volúmenes de correos electrónicos a través de una infraestructura especializada y optimizada para esta tarea. Ejemplos de relays externos son Amazon SES, MailGun o SendGrid.

Es decir, cuando nuestro sitio web necesita enviar muchos emails transaccionales y muchos emails de marketing, necesitamos configurar un relay SMTP externo en nuestro WordPress.

También existen otros casos en los que, por alguna razón, nuestro WordPress deja de enviar correos electrónicos. Esto suele notarse en lo siguiente:

  • No me llegan los envíos de los formularios de contacto de mi WordPress a mi correo.

  • A mis clientes no les llegan los emails de mi tienda online WooCommerce.

  • No consigo recuperar la contraseña porque no llega el email que me tendría que llegar.


Esto son solo algunos ejemplos, hay muchísimos más, ya que cuando WordPress deja de enviar emails tenemos un problema.

¿Cuál es la razón por la que WP deja de enviar correos?

Es difícil adivinarlo directamente, puesto que puede estar relacionado con el servidor o incluso, en algunos casos, el problema puede estar en la configuración de SPF y DKIM que hacen que el servidor de correo no tenga buena entregabilidad y, por lo tanto, los emails salgan, pero no lleguen o los rechace el servidor de correo de destino.

Hacer que nuestro WordPress envíe correo electrónico no es difícil, pero debemos entender varias cosas:

  • PHPMail no es la solución idónea, pero funciona en la mayoría de los casos y nos evita tener que configurar un servidor de correo SMTP en nuestro sitio web.

  • Cuando el envío de correos electrónicos falla por PHPMail, puede ser tanto de la configuración del servidor como de la configuración del WordPress. Incluso puede que otro plugin esté interfiriendo con esta función.

  • Cuando pasamos de los 50-100 emails transaccionales o de marketing al día, debemos pensar en la configuración de un relay SMTP externo.

  • El envío a través de SMTP es mucho mejor y está más optimizado, ya que los plugins (como FluentSMTP o WP Mail SMTP) que se utilizan para esto suelen implementar también un sistema de colas para cuando se tienen que hacer muchos envíos en un corto periodo de tiempo.


En cualquier caso, vamos a poner fin a la teoría y vamos con la práctica.

En primer lugar, vamos a ver cómo comprobar si los emails se están enviando o están dando cualquier problema. Después, veremos cómo configurar un servidor SMTP en WordPress.

Índice del artículo
  • Log de correo electrónico en WordPress
  • FluentSMTP para configurar un servidor SMTP en WordPress

Log de correo electrónico en WordPress


Antes de explicarte cómo configurar un servidor SMTP en WordPress, te voy a enseñar a detectar cuándo el problema no está en cómo salen los emails, sino en cómo se entregan en el destino.

Para hacer esto, y antes de realizar ningún cambio en la configuración del sitio, yo suelo utilizar el plugin Check & Log Email. Se trata de un plugin gratuito que podemos encontrar en el repositorio oficial de WordPress: https://wordpress.org/plugins/check-email/

Este plugin, una vez que lo instalamos, se nos añade al menú del dashboard de WordPress:

smtp en wordpress check & log email

De primeras, como puedes ver en la captura anterior, podemos enviar un email de prueba.

Pulsamos el botón "Enviar un correo electrónico de prueba" y podemos comprobar en nuestro correo si nos ha llegado (en la dirección de correo que hemos puesto).

smtp en wordpress wp mail smtp

Una vez que comprobamos esto, vamos al registro.

Para ir al registro o log en Check & Log Email, nos vamos a "Ajustes" y después a "Registro":

dirección de correo wp mail smtp

Y ahora debemos activar los registros.

Y, al activar esto, en el menú de la derecha nos aparecerá el registro:

correo electrónico wp

Ahora volvemos a hacer la prueba de envío como al principio de esta sección y nos aparecerá en el registro el envío realizado con más datos:

smtp en wordpress

Si el símbolo del check verde que vemos en la captura anterior está en el registro, quiere decir que el email correspondiente ha salido correctamente hacia el servidor de correo de destino.

En caso de que aparezca una cruz roja, es que el correo electrónico no ha salido correctamente de nuestra instalación WordPress y, por lo tanto, necesitamos configurar nuestro WordPress para enviar esos correos electrónicos por SMTP a través de un servicio de correo electrónico en lugar de hacerlo por PHPMail.

Y eso es precisamente lo que vamos a hacer en la siguiente sección de este post.

En caso de que el check esté en verde pero, aun así, no se reciban los emails, entonces estamos ante un problema de entregabilidad, pero este post no está orientado a eso.

FluentSMTP para configurar un servidor SMTP en WordPress


Como he dicho antes, existen muchos plugins que permiten configurar WordPress para que los correos electrónicos salgan a través de un servidor SMTP.

Tenemos WP Mail SMTP, Easy WP SMTP, WP Mail Bank, etc. Aquí vamos a hacerlo con FluentSMTP, ya que es mi plugin favorito para configurar un SMTP externo.

smtp en wordpress

FluentSMTP es un plugin completamente gratuito que permite configurar un servidor SMTP para el envío de correos, pero también nos permite configurar un relay SMTP o por API externo para que nuestro sitio web sea capaz de realizar grandes envíos de correos de forma optimizada, sin depender del servidor de correo del hosting.

En este caso, para el ejemplo, vamos a configurar el servidor SMTP de nuestro hosting para que nuestro WordPress envíe los correos a través de él.

Empezamos instalando FluentSMTP. Debemos instalar y activar el plugin. En "Ajustes" nos aparecerá una nueva sección llamada "Fluent SMTP":

smtp en wordpress

En la pantalla de la captura anterior seleccionamos "Other SMTP" y esto nos desplegará el formulario para meter los datos de conexión con el servidor SMTP.

smtp en wordpress

En primer lugar, debemos configurar la sección de "Sender Settings", aunque es totalmente opcional y podemos dejarla en blanco.

smtp en wordpress

Las opciones de esta sección son bastante lógicas: nos permiten forzar el "from email" y el "from name", es decir, el correo electrónico y el nombre del remitente de los correos electrónicos enviados desde nuestro sitio web.

Y, para rellenar la parte de abajo, necesitamos tener los datos de un buzón de correo electrónico de nuestro hosting. En este caso, voy a usar un hosting cPanel de los nuestros para sacar los datos, así como una cuenta de correo previamente creada.

Dentro de cPanel, en la sección de "Cuentas de email", podemos darle a "Conectar dispositivos" en la cuenta de correo que vamos a configurar:

smtp en wordpress

Y esto nos va a llevar a una ventana donde nos saldrán todos los datos para conectar el SMTP a nuestro sitio web, excepto la contraseña, que la debemos conocer de antes o resetearla.
Ten en cuenta que esta parte del proceso (sacar los datos de conexión al servicio de correo electrónico) cambia dependiendo del panel de control que utilice tu proveedor de hosting.

En el caso de cPanel, tendremos esto:

correos electrónicos cpanel

Rellenamos los datos, incluyendo el "SMTP Host" y el "SMTP Port":

correo electrónico envío de correos

El único campo que no depende de tu hosting o servidor es "Store Access Keys in DB", que yo te recomiendo dejarlo en lo que viene marcado por defecto para evitar líos:

smtp correos electrónicos

Cuando tengamos todo correcto, pulsamos el botón "Save Connection Settings" y guardamos la configuración para el envío de emails.

Ahora, en la pantalla principal del plugin, nos aparecerá la conexión configurada:

configuración smtp correo electrónico

FluentSMTP nos permite configurar varias conexiones a varios servicios de relay SMTP externos o en el propio servidor. Incluso permite configurar un servicio de correo principal y un servicio "fallback" para cuando falle el principal.

Con esto ya tendríamos la configuración SMTP hecha y podemos probarla desde la pestaña "Email Test" de FluentSMTP.

correo electrónico SMTP fluent

Otro de los puntos fuertes que tiene FluentSMTP es que tiene un registro o log similar al que tendríamos con "Check & Log Email":

correo electrónico SMTP

Como puedes ver en la imagen anterior, permite incluso reenviar los emails si han dado fallo o si el destinatario no ha llegado a recibirlos en su cuenta de correo.

De todas las opciones disponibles para hacer esto, a mí el plugin FluentSMTP es el que más me gusta por estos detalles que pueden parecer una tontería, pero son muy útiles.
Álvaro Fontela
Álvaro Fontela

Alvaro Fontela es consultor WordPress especializado en WPO y rendimiento web, además de co-fundador y CEO de Raiola Networks.

Artículos relacionados

Si te ha gustado este post, aquí tienes otros que pueden ser de tu interés. ¡No dejes de aprender!

Aún no tenemos comentarios en Configurar WordPress para enviar emails por SMTP

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *