En este artículo vamos a ver como configurar el envío de correos en WordPress. Es un problema habitual, montamos nuestra web, la configuramos, añadimos el contenido y todo perfecto. Y entonces nos damos cuenta de que los correos no llegan. Ya sea una sencilla web presencial con un formulario de contacto o una elaborada tienda online, el que los correos se envíen (y no lleguen a spam) es algo básico.
Así que aquí vamos a ver como arreglar este sistema
Configurando SMTP
El envío de correos en WordPress se basa en la función mail. Esta es una herramienta que permite enviar correos por programación de forma sencilla. ¿Qué problema tiene? Que de tan sencilla que es se considera insegura pues se puede usar para enviar spam de forma masiva desde cualquier servidor.
Es bastante habitual que los correos que se envían de esta forma acaben en la carpeta de spam. Es más, hay empresas de hosting que directamente bloquean el uso de esta función para evitar ser categorizadas como empresas que envían SPAM. Con lo que los correos no llegarán ni a salir. Ni siquiera llegarán a «correo no deseado». Así que tendremos que usar otro método. El más habitual es SMTP (Simple Mail Transfer Protocol)
Para usar SMTP necesitaremos una cuenta de correo en nuestro servidor y usaremos el usuario/contraseña de la misma para enviar correos. El primer paso será crear dicha cuenta.
Esto dependerá del proveedor que estemos usando, pero en general todos ellos tendrán una opción para añadir una cuenta de correo. Crearemos una y nos quedaremos con tres datos: dirección, contraseña y servidor SMTP.
En mi caso tengo la web alojada en Dondominio, así que la configuración sería esta (la contraseña no la muestro, por razones obvias)
Plugins para el envío de correos en WordPress
Para usar SMTP en WordPress vamos a necesitar un plugin. Hay muchos plugins SMTP en el repositorio donde elegir. El más usado es WP Mail SMTP by WPForms que permite otros modo de envío y tiene muchas funciones interesantes.
Pero yo usaré WP SMTP. Es más sencillo y más manual en su configuración. Pero tiene todo lo que le pido a un plugin de este tipo (configuración de SMTP, prueba de configuración y registro de correos enviados), ni más, ni menos.
Instalamos el plugin y nos vamos a su sección de ajustes. En el formulario tendremos que introducir los datos necesarios. Si desconocemos alguno, la información debería estar en el panel de control de nuestro hosting. O podemos preguntar a soporte.
En mi caso, sería algo así:
Y con esto ya estaría. Abajo tenemos una sección «Prueba de tus ajustes» para comprobar que los correos se envían y también tenemos otra pestaña en la que se va guardando un registro de los correos enviados.
Y con esto ya podríamos enviar correos sin más problemas. ¿O quizás no?
Los correos llegan a SPAM
Puede ocurrir que nuestros correos se marquen como SPAM. Esto suele ocurrir si el dominio es recién creado o si usamos un servicio de correo distinto a nuestro proveedor de hosting.
Podemos comprobar si existen problemas usando esta herramienta: Mail Tester
Es bastante sencilla. Mail Tester nos indica una dirección de correo. Pues usando la herramienta de «Prueba tus ajustes» de WP SMTP mandamos una prueba a dicha dirección. Y recargamos la página de Mail Tester.
En mi caso está todo perfecto. 10/10. Si tienes una puntuación similar o, al menos, por encima de 8 y el correo de pruebas te llegó sin problema, puedes dejar de leer aquí, ya tienes todo funcionando. Pero es posible que tengas una puntuación peor y que tengas que corregir algo. Lo más habitual es tener que corregir las entradas SPF y DKIM
Creando una entrada SPF
SPF significa «Sender Policy Framework». Se usa para indicar que el servidor SMTP tiene permiso para enviar correos asociados al dominio. Dicho de otra forma, que la «máquina» que envía los correos desde (por ejemplo) angelaparicio.dev tiene permiso para enviar correos desde esa dirección.
Hay que tener en cuenta que un correo, como casi todo en informática, es texto. Cuando se envía un correo el sistema de envíos dice cual es la dirección de envío. Pero por programación se podría poner cualquier dirección.
Por poner un ejemplo, yo puedo programar (con la función mail que comenté al principio) que desde mi ordenar se envíe un correo con el remitente que yo quiera. Por ejemplo: info@google.com o avisos@agenciatributaria.gob.es. A este intento de engaños se le conoce como phishing
En la mayoría de las veces estos correos llegarían a SPAM. O ni siquiera eso, los sistemas de correos los ignorarían por completos. ¿Cómo? Pues porque verían que el correo llega desde una dirección IP distinta a la que debería ser.
La dirección IP es como el «número de teléfono» de una web. En el caso de la Agencia Tributaria (por seguir con el ejemplo) el número es 195.77.198.16. Si un correo electrónico haciéndose pasar por la agencia tributaria llega desde otra IP, pues se bloquea.
A veces puede ser que tengamos el servidor de correo en una máquina distinta a nuestra web. Aquí es donde entra en juego el SPF, hay que indicar que el servidor de correo tiene permiso para enviar mails asociados a dicho dominio.
Esto ya es algo más complicado, aunque casi todos los hostings tienen instrucciones claras al respecto. Se trata de ir a lo que se conoce como «Zona DNS» (que es donde se configura el dominio) y añadir una línea donde se indique desde que direcciones o dominios extra se pueden enviar correos. En mi caso:
En esa configuración se dice que dondominio.com puede enviar mails desde angelaparicio.dev
Bueno, quizás te esté mareando un poco. Lo normal es que no tengas que hacer nada, pues estas cosas ya vienen configuradas de base. Te puede hacer esto falta si vas a usar un sistema externo para enviar mails (tipo Mailchimp, Brevo o Mailerlite). En ese caso todos estos sistemas te dirán de forma clara que hacer.
Y por cierto, si te estás preguntando porqué estoy poniendo tantos datos sobre mi configuración de correos, si esto no es inseguro para mi, tranquilo, toda la información que he puesto es pública. De hecho, los servidores de correo es lo que revisan para asegurar que no hay «phising»
Creando una entrada DKIM
Una entrada DKIM (DomainKeys Identified Mail) consiste en un registro DNS con una clave pública utilizada para firmar digitalmente los mensajes de correo electrónico. Cuando un servidor de correo recibe un mensaje firmado con DKIM, puede verificar la firma utilizando la clave pública del remitente. Si la firma es válida, pues estaría todo correcto.
Si no te suena esto de la «clave publica» es un sistema muy habitual para asegurar la autenticidad de las comunicaciones electrónicas: Sistema claves públicas / privadas.
En este caso no me voy a explayar en demasiadas explicaciones técnicas. A efectos prácticos es añadir una entrada DNS como hicimos con el SPF. Nuestro proveedor de correo nos dirá que añadir
Resumen final
Enviar correos de forma correcta desde nuestra página web es algo que suele ser imprescindible. Por muy simple que sea nuestra web por lo menos tendrá un formulario de contacto. El sistema por defecto de envío de correos puede dar problemas de SPAM, por lo que lo mejor es usar SMTP. Para ello tendremos que crear una cuenta de correo (o usar una ya existente) y usar los datos de autenticación para enviar nuestros correos. Tendremos que usar un plugin para ello (Recomiendo WP-SMTP)
Es posible que tengamos que aplicar una configuración adicional si tenemos un servidor de correo distinto al servidor web. Puede que haya algo que configurar pero no suele ser complicado, pues el sistema SMTP está bastante extendido y la configuración es automática en la mayoría de ocasiones.
Aún así, si tienes problemas con el envío de correos desde tu WordPress puedes contratar mis servicios de mantenimiento WordPress