Una de las incidencias que más se repiten (o al menos una de las consultas más recurrentes que me llegan) es que WordPress no envía emails. Hablamos, claro está, de los emails de nuevos usuarios, de cambio de contraseña, de los envíos del formulario de contacto o incluso los relativos a los pedidos de WooCommerce.
Las causas pueden ser varias, y lo primero que tenemos que hacer es saber por qué está ocurriendo para aplicar una solución u otra. Así que vamos a repasar las posibles razones de que WordPress no esté enviando emails, y cómo solucionar cada una de ellas.
Por cierto, que la herramienta que veremos al final te servirá perfectamente también si necesitas enviar emails con WordPress instalado en un servidor en localhost.
Tabla de contenidos
Qué está pasando con los emails en mi WordPress
Con esto, como con todo, para poder aplicar una solución efectiva es imprescindible saber cuál es el problema, así que hay que comenzar haciendo algunas pruebas para conocer la causa de que WordPress no esté enviando emails.
O a lo mejor sí lo está haciendo…
Enviando emails de prueba con WordPress
Lo primero que necesitamos es poder enviar emails de prueba (o, al menos, intentarlo) para comprobar qué está pasando y poder utilizar, configurar y probar las herramientas que vamos a ir viendo.
Para esto no hay nada mejor que Check Email, un sencillo plugin que te permite enviar mediante WordPress emails de prueba.
Al activarlo tienes la herramienta correspondiente en Herramientas > Check Email, y no sólo te permite enviar (o, al menos, intentarlo) un email de prueba desde WordPress: además te informa de cuál es la configuración para envío de emails (SendMail y/o servidor SMTP) y las cabeceras que están configuradas en la web (campo From y tipos MIME). Y, no sólo eso, sino que además te permite utilizar cabeceras personalizadas para realizar la prueba.
Pero ojo, que Check Email te informe de que el email haya sido enviado no significa que realmente el email haya sido enviado, sino que WordPress ha hecho su trabajo. Sin embargo, esto nos va a facilitar una primera comprobación y una herramienta útil para hacer la pruebas necesarias en la resolución de nuestro problema.
Si por el contrario recibes el email enviado por Check Email (el asunto será Test email from https://www.tudominio.com) tendrás que buscar otra causa: tu WordPress sí está enviando emails correctamente.
Revisa la configuración del formulario de contacto, de los emails de WooCommerce (WooCommerce > Ajustes > Correos electrónicos) o de lo que sea que no te está enviando los correos. El problema no es de WordPress.
Los emails que envía tu web van a spam
A veces resulta que WordPress sí está enviando emails, pero éstos se van directos a la carpeta de spam, o son rechazados por el servidor por esta misma causa. Así que, si no recibes emails de tu web, lo primero que tienes que hacer es comprobar la bandeja de correo no deseado.
Si es esto lo que está pasando, lo siento mucho: ya no tienes el problema de que WordPress no envíe emails, pero tienes uno más peliagudo.
Dejo pendiente la tarea de qué acciones se pueden tomar para evitar que los emails que salen de tu web se vayan directos a la bandeja de correo no deseado, pero de momento te remito a una herramienta: Email tester.
Actualización. Puedes ampliar la información sobre este tema aquí:
Esta web te permite comprobar la puntuación de spam de tus emails con sólo enviarle un correo electrónico (puedes utilizar la herramienta que acabamos de ver en el apartado anterior) y te dice qué aspectos de éstos necesitas mejorar para evitar las carpetas de correo no deseado, junto a unas indicaciones sobre cómo hacerlo.
Qué hacemos si realmente WordPress no está enviando emails
Bien, pues resulta que has probado Check Email y, aunque te diga que los emails se están enviando, tú no recibes nada. Has comprobado la carpeta de correo basura, y allí tampoco hay nada (ojo a muchos servidores, que a veces no envían el spam allí y simplemente lo rechazan, comprueba con una dirección Gmail o Hotmail).
Vale, ¿qué toca hacer ahora? La primera opción es, por supuesto, ponerte en contacto con tu proveedor de hosting. Es poco probable que la incidencia se deba a ellos, pero quizá puedan hacer algo al respecto o darte alguna pista (mirando los logs) de lo que está pasando en tu servidor de correo.
Si resulta que es uno de estos servicios de hosting baratos con un servicio de atención al cliente pésimo, simplemente te contestan que han hecho las comprobaciones y por su parte está todo correcto, o simplemente resulta que sí, que tu hosting está bloqueando determinados puertos y eso no permite que salgan emails, no te queda otra: tienes que buscar alternativas.
Y la alternativa más fácil y efectiva es utilizar un servidor SMTP externo. Esto podrás implementarlo gracias al plugin Post SMTP Mailer/Email Log que te permite precisamente eso: configurar un servidor SMTP para que WordPress lo utilice en sus envíos de correo electrónico.
Este plugin te permitirá utilizar para el envío de emails (incluso desde un servidor en local, como XAMPP) utilizando otros servicios como:
- GMail
- Mandrill (que es el servicio de envío SMTP de MailChimp, requiere cuenta premium)
- SendGrid (hasta doce mil emails mensuales con la cuenta gratuita)
- Cualquier otro proveedor que utilice OAuth 2.0
La configuración es realmente sencilla (Ajustes > Postman SMTP), ya que además incluye un asistente de configuración:
Una vez configurado ya sabes qué tienes que hacer: enviar un nuevo email de prueba. Esta vez no necesitas Check Email ya que Postman SMTP incluye también una herramienta similar (Ajustes > Postman SMTP > Send a Test Email).
Si sigues sin recibirlo no desesperes: ahora tendrás más pistas de lo que ha pasado. Sólo tienes que ir a Herramientas > Email log (donde Postman SMTP guarda un registro de la actividad) y mirar la causa del error del email de prueba.
Sin embargo esta vez serán cosas sencillas de resolver, ya que estás utilizando un servidor SMTP: un nombre de usuario o contraseña mal puestos, seguramente. En cualquier caso, con la descripción del error que te dé Postman SMTP podrás fácilmente encontrar una solución.
Y si no, me puedes consultar y, si está en mi mano, te echaré una mano encantado. No tienes más que usar el formulario de contacto. 🙂
Actualización: si WooCommerce no envía los emails cuando se recibe un nuevo pedido
La actualización a WooCommerce 3.0 está causando muchos problemas, y uno recurrente es que no se envían los emails de nuevo pedido (ni el que debería recibir el gestor de la tienda ni el del cliente).
Sin embargo, si entras al pedido y haces que se envíen esos emails mediante las acciones del pedido se envían correctamente, al igual que cualquier otro email de WooCommerce.
Si estás sufriendo este problema, puedes solucionarlo fácilmente añadiendo este filtro en el archivo functions.php de tu plantilla:
add_filter ('woocommerce_defer_transactional_emails', '__return_false');