
Si administras un sitio web, sabes que hay pocas cosas tan frustrantes como los correos que simplemente no llegan. Un usuario pide restablecer su contraseña y no recibe el enlace. O, peor aún, llega una notificación de un nuevo pedido importante y se pierde en el limbo digital. La solución casi siempre pasa por lo mismo: dejar de confiar en el sistema por defecto y configurar SMTP en WordPress. Es la única forma de asegurar que el mensaje realmente cruce la puerta.
WordPress viene de fábrica preparado para enviar correos usando una función de PHP llamada mail(). Vale para pruebas en tu ordenador local. Pero en un servidor real, en internet, eso suele quedarse corto. Los filtros antispam son cada vez más estrictos. Vamos a ver por qué ocurre esto y cómo arreglarlo de una vez.
Índice
PHP mail vs SMTP: Entendiendo la diferencia técnica
Antes de tocar nada de configuración, conviene saber qué pasa bajo el capó. La diferencia entre usar PHP mail() y SMTP (Simple Mail Transfer Protocol) parece sutil, pero determina la ruta exacta que recorre tu correo hasta el buzón de alguien.
Funcionamiento de PHP mail()
La función mail() es el método fácil y rápido. No requiere autenticación. WordPress le entrega el mensaje al agente de transferencia de correo (MTA) que haya instalado en el servidor (Sendmail, Postfix…) y reza para que el resto funcione.
Aquí es donde empiezan los problemas. El asunto suele ser la reputación de la IP. La mayoría del hosting compartido utiliza direcciones que han pasado por cientos de manos. Si alguno de esos usuarios se dedicó al spam, la IP está en listas negras (RBLs). Sin cabeceras de autenticación, filtros agresivos como los de Gmail u Outlook miran ese correo, sospechan y lo bloquean. O lo mandan a la carpeta de spam sin decirte nada.
La robustez del protocolo SMTP
Al configurar SMTP en WordPress, cambias la dinámica. En lugar de tirar el mensaje y esperar, estableces una comunicación directa y autenticada con un servidor de correo saliente. Básicamente, le dices a tu web que actúe como un cliente de correo serio (tipo Thunderbird o Outlook).
El protocolo SMTP añade dos capas que los proveedores de correo valoran mucho:
- Autenticación: Usas un usuario y una contraseña (o API Key) verificada. El servidor sabe quién eres.
- Cifrado: Empleas TLS o SSL para encriptar la conexión. Nadie lee el mensaje mientras viaja.
Los grandes (Google, Amazon SES, SendGrid) confían en esto porque pueden verificar la identidad. La deliverabilidad mejora drásticamente.
Por qué tus correos no llegan: Causas comunes
No todos los fallos son iguales. A veces es un error técnico, a veces es un filtro invisible. Usar PHP mail() en un servidor mal ajustado suele terminar en uno de estos tres escenarios:
- Correo no entregado: El servidor de destino rechaza la conexión porque detecta una IP dinámica o con mala fama.
- Carpeta de Spam: El mensaje llega, pero la falta de firmas como SPF o DKIM hace que los filtros lo envíen directo a la basura.
- Retrasos extremos: La cola de tu servidor está saturada gestionando miles de correos ajenos. Tus notificaciones importantes tardan horas (o días) en salir.
Cómo configurar SMTP en WordPress
La salida es reemplazar esa función nativa de WordPress por una conexión SMTP real. Se puede hacer toqueteando el archivo wp-config.php, pero es un lío y propenso a errores. Lo sensato es usar un plugin que gestione la autenticación por ti.
Paso 1: Instalación del plugin de envío
En el repositorio de WordPress hay opciones para todos los gustos. El enfoque, sin embargo, es idéntico. Busca uno compatible con SMTP (WP Mail SMTP o SMTP Mailer son los clásicos). Actívalo y ve al menú de ajustes, que suele estar en Ajustes > Email (o similar).
Paso 2: Configuración de los parámetros de conexión
Aquí es donde hay que ir con ojo. Un dato mal escrito y nada funciona. Rellena los campos con la información que te da tu proveedor de correo:
- From Email (Correo desde): Usa una dirección real y verificada. Ojo: debe coincidir con la que usas para autenticarte en el SMTP. Si no, tendrás un error de «Sender Mismatch» y el envío fallará.
- From Name (Nombre desde): Lo que verá la persona que recibe el mensaje (ej: «Soporte Técnico de Mi Sitio»).
- Mailer (Transporte): Selecciona «SMTP» u «Other SMTP».
- SMTP Host: La dirección de tu servidor (smtp.gmail.com, mail.tudominio.com…).
- Encryption (Cifrado): Elige TLS (para el puerto 587) o SSL (para el 465). Dejarlo en «Ninguno» hoy en día es una mala idea.
- SMTP Port: Lo de siempre: 465 si usas SSL, 587 si usas TLS.
- Auto TLS: Actívalo. Permite que el script intente subir el nivel de cifrado si el servidor lo permite.
- Authentication (Autenticación): Ponlo en «On» (Activado).
- SMTP Username / Password: Tu usuario y contraseña de correo. Nota para usuarios de Gmail con 2FA: tu clave normal no sirve. Tienes que generar una «Contraseña de aplicación».
Paso 3: Envío de prueba de correo electrónico
No des nada por sentado. Aunque hayas guardado todo bien, haz una prueba. Busca la pestaña de «Email Test» en el plugin. Escribe una dirección externa (mejor si no es del mismo dominio de tu web, usa un Gmail personal o similar) y dispara el mensaje.
Revisa la bandeja y la carpeta de SPAM. Si llega, bien. Pero si quieres asegurarte al 100%, mira las cabeceras del mensaje (en tu cliente, busca «Ver origen»). deberías ver una línea que diga Received: from tu-servidor-smtp.com. Si ves eso, la ruta SMTP está funcionando.
Solución alternativa: APIs de envío transaccional
Si no quieres pelearte con contraseñas y puertos, hay otra vía. Los sitios con mucho tráfico suelen tirar de APIs transaccionales. Servicios como SendGrid, Mailgun, Amazon SES o Postmark tienen plugins oficiales que conectan WordPress por HTTPS API.
Es más limpio y escalable. No dependes de tu servidor local. Eso sí, para la mayoría de webs pequeñas y medianas, configurar SMTP con el propio hosting o una cuenta de Gmail dedicada sobra y es más barato.
Preguntas Frecuentes
¿Puedo usar mi cuenta de Gmail personal?
Puedes, pero cuidado. Google pone límites duros (500 correos al día para cuentas gratis). Si tu web se mueve mucho, vas a chocar con ese techo.
¿Por qué falla la conexión al puerto 465?
A veces es el firewall del servidor bloqueando salidas en puertos SSL no estándar. Prueba a cambiar al 587 con cifrado TLS y suele arreglarse.
Conclusión
Seguir usando PHP mail() es jugar a la ruleta rusa. Falta de autenticación y IPs compartidas con mala fama son una receta para el desastre. Configurar SMTP en WordPress no es solo un ajuste técnico; es una necesidad operativa. Si quieres que tus usuarios reciban lo que les toca, no hay otra.
Si después de todo esto sigues con problemas, quizá el tema sea más profundo: un firewall muy restrictivo o unos registros DNS que no cuadran. En RedServicio (redservicio.net) nos dedicamos a esto. Podemos auditar tu servidor, ajustar los registros SPF, DKIM y DMARC, y dejar tu correo fino. Si la comunicación es clave para tu negocio, no dejes que se rompa.

