Solucionar problemas de envío de correo en WordPress
¿Tu WordPress ha dejado de enviar correos electrónicos? Es uno de los problemas más frustrantes, especialmente si gestionas una tienda online, un blog con suscriptores o un sitio que depende de notificaciones. No te preocupes: es un fallo muy común, pero casi siempre tiene una solución sencilla. En esta guía completa y paso a paso, te explicaré por qué ocurre, cómo diagnosticarlo y, lo más importante, cómo arreglarlo de forma definitiva. Vamos a ello.
¿Por qué WordPress no envía correos? El origen del problema
Para entender la solución, primero debemos entender el problema. WordPress utiliza la función nativa de PHP llamada mail() para enviar correos. Esta función es muy básica y, a menudo, no está correctamente configurada en los servidores de hosting compartido. Los principales motivos por los que WordPress no envía correos son:
- Falta de autenticación: Los servidores de correo modernos (Gmail, Outlook, Yahoo) exigen autenticación. La función
mail()de PHP no proporciona ninguna, por lo que los correos son rechazados o marcados como spam. - Restricciones del hosting: Muchos proveedores de hosting bloquean la función
mail()por seguridad o para evitar el envío masivo de spam desde sus servidores. - Configuración incorrecta del servidor: El servidor puede no tener un MTA (Mail Transfer Agent) configurado correctamente, o el puerto 25 (el estándar para correo) puede estar bloqueado.
- Uso de servicios de terceros sin configuración SMTP: Si tu dominio usa Google Workspace, Office 365 o cualquier otro proveedor externo, la función
mail()de PHP no sabe cómo conectarse a ellos. - Plugins o temas conflictivos: Ocasionalmente, un plugin de seguridad, formulario de contacto o incluso el propio tema pueden interferir con el envío de correos.
[INFO] La función
mail()de PHP es como una carta sin remitente ni matasellos. Los servidores de correo modernos la rechazan automáticamente porque no pueden verificar su origen.
Diagnóstico: ¿Cómo saber si realmente no se envían los correos?
Antes de aplicar soluciones, asegurémonos de que el problema es real y no un falso positivo. Sigue estos pasos:
1. Prueba con un formulario de contacto o recuperación de contraseña
La forma más rápida es intentar una acción que genere un correo automático:
- Ve a tu sitio y usa el formulario de "¿Olvidaste tu contraseña?".
- Introduce tu nombre de usuario o email.
- Espera unos minutos. Si no recibes nada, revisa la carpeta de Spam. Si tampoco está ahí, es muy probable que el envío falle.
2. Usa un plugin de prueba de correo
Es la forma más fiable y limpia de diagnosticar. Te recomiendo instalar un plugin específico para esto. Busca en el repositorio de WordPress "Email Test" o "Check & Log Email". Una vez instalado:
- Ve a Herramientas > Email Test (o similar).
- Introduce una dirección de correo a la que tengas acceso.
- Haz clic en "Enviar correo de prueba".
- Si no lo recibes, el problema está confirmado.
3. Activa el registro de errores de WordPress (opcional pero muy útil)
Si te sientes cómodo editando archivos, puedes activar el registro de errores para ver si PHP reporta algún fallo al intentar enviar el correo. Añade estas líneas al archivo wp-config.php (justo antes de la línea que dice "¡Eso es todo, deja de editar!"):
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Luego, repite la prueba de correo. Después, revisa el archivo wp-content/debug.log en tu servidor (a través de FTP o el administrador de archivos de tu hosting). Busca líneas que contengan "mail" o "email". Si encuentras errores, tendrás más pistas.
[WARNING] No dejes
WP_DEBUGactivado en un sitio en producción. Desactívalo una vez resuelto el problema para evitar exponer información sensible.
Soluciones: Cómo arreglar el envío de correo en WordPress
Una vez confirmado el problema, pasamos a las soluciones. La más efectiva y recomendada es configurar un SMTP externo. Esto es como darle a WordPress una dirección de correo real, con remitente, autenticación y todo lo necesario para que los servidores confíen en él.
Solución 1 (Recomendada): Configurar SMTP con un Plugin
Esta es la opción más sencilla y segura para la mayoría de los usuarios. Un plugin correo WordPress se encarga de todo el trabajo técnico. Aquí tienes los pasos generales, que funcionan con los plugins más populares como WP Mail SMTP, Easy WP SMTP o Post SMTP.
Paso 1: Elige tu proveedor de correo SMTP
Necesitarás una cuenta de correo electrónico que tenga acceso SMTP. Las opciones más comunes son:
- Gmail / Google Workspace: Muy fiable y fácil de configurar. Necesitas una cuenta de Gmail o de Google Workspace.
- Outlook / Office 365: Igual de fiable. Necesitas una cuenta de Microsoft.
- Servicio de correo de tu hosting: Casi todos los hostings ofrecen cuentas de correo con suscripción. Deberás buscar los datos SMTP en el panel de control de tu hosting (cPanel, Syspanel, etc.).
- Servicios de email transaccional (recomendado para alto volumen): SendGrid, Mailgun, Amazon SES. Son ideales si envías miles de correos (ej. tiendas online). Suelen tener capas gratuitas.
Paso 2: Instala y activa un plugin SMTP
Ve a Plugins > Añadir nuevo en tu escritorio de WordPress. Busca "WP Mail SMTP" (es el más popular y completo). Instálalo y actívalo.
Paso 3: Configura el plugin
Ve a Ajustes > WP Mail SMTP. Verás un asistente de configuración. Selecciona tu proveedor de correo (ej. "Google / Gmail" o "Otro SMTP").
- Para Gmail/Google Workspace: El plugin te guiará para crear una "Clave de API" o usar "OAuth". Es el método más seguro. Solo sigue los pasos en pantalla.
- Para otro SMTP (Outlook, hosting, etc.): Necesitarás los siguientes datos (los obtienes de tu proveedor):
- Servidor SMTP: Ej.
smtp.gmail.com,smtp.office365.com,mail.tudominio.com. - Puerto: Normalmente
587(con TLS) o465(con SSL). El 587 es el más estándar. - Cifrado: TLS o SSL, según el puerto.
- Autenticación: Activada.
- Nombre de usuario: Tu dirección de correo completa (ej.
hola@tudominio.com). - Contraseña: La contraseña de esa cuenta de correo.
- Servidor SMTP: Ej.
Guarda los ajustes y, en la misma página, realiza una prueba de envío. Si todo está bien, ¡recibirás el correo de prueba!
[TIP] Si usas Gmail y tienes activada la verificación en dos pasos (2FA), deberás generar una "Contraseña de aplicación" desde la configuración de seguridad de tu cuenta de Google. No uses tu contraseña normal.
Solución 2: Configurar SMTP manualmente (sin plugin)
Si prefieres no usar un plugin (por rendimiento o por tener un sitio muy minimalista), puedes añadir el código SMTP directamente al archivo functions.php de tu tema hijo (¡nunca en el tema principal!). Es más técnico, pero igual de efectivo.
Añade este código al final de tu archivo functions.php:
add_action( 'phpmailer_init', 'configurar_smtp_wordpress' );
function configurar_smtp_wordpress( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.tudominio.com'; // Cambia por tu servidor SMTP
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587; // O 465 si usas SSL
$phpmailer->SMTPSecure = 'tls'; // O 'ssl' si usas puerto 465
$phpmailer->Username = 'tu-correo@tudominio.com';
$phpmailer->Password = 'tu-contraseña';
$phpmailer->From = 'tu-correo@tudominio.com';
$phpmailer->FromName = 'Nombre de tu sitio';
}
Guarda el archivo y prueba de nuevo. Si no funciona, revisa que los datos sean correctos y que el puerto no esté bloqueado por tu hosting.
[WARNING] Si editas
functions.phpy cometes un error, puedes romper tu sitio. Siempre usa un tema hijo y haz una copia de seguridad antes de editar.
Solución 3: Verificar la configuración de tu hosting (Syspanel / cPanel)
A veces el problema no está en WordPress, sino en la configuración del servidor. Si tu hosting usa Syspanel (el antiguo HestiaCP), el acceso es a través del puerto 2106 (ej. https://tudominio.com:2106). Allí puedes:
- Revisar las cuentas de correo: Asegúrate de que la cuenta de correo que intentas usar existe y está activa.
- Verificar los registros DNS: Especialmente el registro MX (Mail Exchange). Este registro le dice al mundo qué servidor gestiona el correo de tu dominio. Si no está bien configurado, los correos no llegarán.
- Comprobar si el puerto SMTP está bloqueado: En Syspanel, ve a Servicios o Firewall. Asegúrate de que los puertos 25, 465 y 587 están abiertos para tráfico saliente. Si no lo están, tu servidor no puede "hablar" con otros servidores de correo.
- Activar/Desactivar la función
mail(): Algunos paneles permiten desactivar la funciónmail()de PHP por seguridad. Si está desactivada, el plugin SMTP la reemplazará, pero si no usas plugin, necesitarás activarla.
Solución 4: Comprobar conflictos con otros plugins o el tema
Si después de configurar SMTP sigues sin recibir correos, puede haber un conflicto. Desactiva temporalmente TODOS los plugins excepto el de SMTP. Luego, prueba de nuevo. Si funciona, reactiva los plugins uno por uno hasta encontrar el culpable. Los sospechosos habituales son:
- Plugins de seguridad (Wordfence, Sucuri, iThemes Security).
- Plugins de optimización de rendimiento (W3 Total Cache, WP Rocket).
- Plugins de formularios de contacto (Contact Form 7, Gravity Forms).
También prueba con un tema por defecto de WordPress (Twenty Twenty-Four) para descartar conflictos con el tema activo.
Preguntas Frecuentes (FAQ)
¿Por qué mis correos de WordPress van a la carpeta de Spam?
Esto suele pasar porque el remitente no está autenticado. Al configurar SMTP con un servicio como Gmail o tu hosting, estás usando un remitente verificado, lo que reduce drásticamente las probabilidades de que acaben en Spam. También ayuda tener configurados los registros SPF, DKIM y DMARC en tu dominio (tu hosting o Syspanel puede ayudarte con esto).
¿Puedo usar mi cuenta de Gmail personal para enviar correos de mi tienda online?
Sí, pero con límites. Gmail tiene un límite de 500 correos por día para cuentas gratuitas. Para una tienda con pocos pedidos, funciona bien. Para volúmenes altos, es mejor usar un servicio de email transaccional (SendGrid, Mailgun) o Google Workspace (que tiene límites más altos).
¿Qué hago si mi hosting es muy restrictivo y no me deja usar SMTP?
Algunos hostings muy económicos bloquean por completo el tráfico SMTP saliente. En ese caso, tu única opción es cambiar de hosting o usar un servicio de email transaccional que se conecte a través de una API (no SMTP). Muchos plugins SMTP, como WP Mail SMTP, tienen integración directa con estos servicios (SendGrid, Mailgun, etc.) y funcionan incluso en entornos restrictivos.
¿Es seguro almacenar la contraseña de mi correo en un plugin o en el código?
Si usas un plugin reputado (como WP Mail SMTP), la contraseña se almacena en la base de datos de WordPress, que está en tu servidor. No es ideal, pero es la práctica común. Para máxima seguridad, usa la autenticación OAuth (con Gmail o Google Workspace) que no requiere almacenar contraseñas, o un servicio de email transaccional que use una clave API.
¿Cómo configuro SMTP en Syspanel (HestiaCP)?
Dentro de Syspanel (puerto 2106), ve a Correo > Cuentas de correo y crea una cuenta. Luego, en los detalles de la cuenta, encontrarás los datos SMTP: servidor (mail.tudominio.com), puerto (587), cifrado (TLS), usuario y contraseña. Usa esos datos en tu plugin SMTP de WordPress.
Conclusión: Di adiós a los correos perdidos
Que WordPress no envíe correos es un problema con solución. La clave está en abandonar la función mail() de PHP y adoptar un sistema de envío autenticado mediante SMTP. Ya sea a través de un plugin sencillo o una configuración manual, el resultado es el mismo: tus correos llegarán a su destino, tus usuarios recibirán sus notificaciones y tu sitio funcionará como debe.
Empieza por instalar un plugin SMTP y configurarlo con tu proveedor favorito (Gmail es el más fácil para empezar). Si encuentras obstáculos, repasa los pasos de diagnóstico y verifica la configuración de tu hosting. Y recuerda: si usas Syspanel, el acceso es por el puerto 2106. ¡No te rindas! Una vez configurado, te olvidarás del problema para siempre.
