Cuando Contact Form 7 deja de enviar, ves dos síntomas claros: (1) los usuarios no reciben confirmaciones, y (2) en los logs de WordPress aparecen mensajes confusos o simplemente nada. El motivo es que WordPress confía en la función wp_mail() del servidor, que es débil, no establece una conexión SMTP segura, y los filtros anti-spam de Gmail, Outlook, Movistar y Yahoo la rechazan sin piedad.
Este artículo te muestra 7 soluciones prácticas para que tus formularios vuelvan a funcionar. Comienza con la más efectiva (SMTP plugin) y sigue hacia abajo según tus necesidades.
Por qué Contact Form 7 no envía correos — las 3 causas principales
Antes de saltar a soluciones, es importante entender qué está pasando detrás de escenas.
- WordPress usa wp_mail() sin SMTP real — Por defecto, WordPress confía en la función de servidor
wp_mail(), que es equivalente a unmail()de PHP. Esta función no autentica tu dominio, no establece una conexión SMTP segura, y es marcada como sospechosa por filtros anti-spam. - El dominio remitente (From) no coincide con tu servidor — Si tu sitio es
mitienda.compero el servidor está en un hosting compartido que envía desdeservidor123.com, los filtros verán una discrepancia y rechazarán el correo o lo marcarán como spam. - Falta configuración SPF/DKIM en tu dominio — Aunque tengas SMTP, si no has publicado registros SPF y DKIM que autoricen al servidor a enviar desde tu dominio, Gmail, Outlook y Yahoo rechazarán el correo o lo enviarán a la carpeta de spam.
Solución 1: Instalar un plugin SMTP (la más importante)
La solución más rápida y efectiva es reemplazar wp_mail() con un plugin SMTP que conecte directamente con un servidor SMTP seguro. Esto eleva tu reputación de remitente de forma inmediata.
Los plugins más usados en español son:
- WP Mail SMTP (gratuito + versión Pro) — Configurable en minutos; soporta Sendgrid, Mailgun, Amazon SES, Brevo, y SMTP manual. Es el más flexible.
- Brevo SMTP (gratuito si usas Brevo) — Incluye 300 correos/día gratuitos y no requiere código de terceros.
- Mailgun — Excelente reputación, 1.000 correos/mes gratis, muy usado en España y LatAm.
Pasos para instalar WP Mail SMTP:
- Ve a tu panel WordPress → Plugins → Añadir nuevo.
- Busca "WP Mail SMTP" → Instala y activa.
- Ve a Ajustes → Email.
- Elige tu proveedor SMTP (p.ej., Mailgun, Brevo, o "Otros SMTP" para un servidor propio).
- Introduce tus credenciales SMTP:
- Servidor SMTP:
smtp.tudominio.como el de tu proveedor - Puerto:
587(TLS) o465(SSL) - Usuario: tu email completo
- Contraseña: la que te proporciona tu servidor SMTP
- Servidor SMTP:
- Marca "Usar encriptación": TLS o SSL según tu servidor.
- Haz clic en "Enviar email de prueba" — si ves "correo enviado", ¡funciona!
Si no tienes un servidor SMTP propio, crea una cuenta gratuita en Mailrelay (español), Brevo o Mailgun e importa sus datos.
Solución 2: Verificar que el From (remitente) sea correcto
Contact Form 7 envía desde la dirección configurada en Ajustes → General → Correo electrónico. Este debe ser un email en TU DOMINIO (p.ej., noreply@mitienda.com o info@mitienda.com), no un email genérico.
Cómo verificar y corregir:
- Ve a Ajustes → General en el panel WordPress.
- En el campo "Correo electrónico", cámbialo a un email que controles en tu dominio (p.ej.,
noreply@mitienda.com). - Si no tienes un email en tu dominio, crea uno en el panel de tu hosting (cPanel, Plesk, etc.) o en tu servicio de correo corporativo (Google Workspace, Microsoft 365, etc.).
- En Contact Form 7, edita el formulario → pestaña "Mail" → campo
from:— asegúrate de que tenga este formato:[your-email]o un email literal comonoreply@mitienda.com.
Consejo importante: El remitente también debe estar autorizado en tu SMTP. Si usas Mailgun o Brevo, verifica que tu dominio esté verificado en su panel de control (muchas veces olvidamos este paso).
Solución 3: Revisar los logs de error de WordPress
WordPress guarda errores en los logs. Acceder a estos te dirá exactamente qué pasó y dónde falló.
Método 1: Via SSH/phpMyAdmin
- Los logs están en
/wp-content/debug.log(siWP_DEBUGestá habilitado enwp-config.php). - O en
/var/log/mail.logen el servidor (requiere SSH).
Método 2: Plugin más fácil — WP Mail Logging
- Instala el plugin "WP Mail Logging" desde Plugins → Añadir nuevo.
- Ve a Herramientas → Email Logs.
- Aquí verás todos los intentos de envío (fallidos y exitosos) con la razón del fallo.
Errores comunes que verás:
SMTP authentication failed— Tu usuario/contraseña SMTP es incorrecto, o el servidor rechaza esa credencial.Connection refused— El servidor SMTP no es accesible desde tu hosting (firewall o puerto bloqueado).Relay access denied— Tu dominio remitente no está autorizado en el servidor SMTP.550 mailbox not found— El email destinatario no existe o ha sido deshabilitado.
Solución 4: Configurar SPF y DKIM en tu dominio
Sin estos registros DNS, muchos proveedores rechazan tus correos antes de llegar ni a spam.
SPF (Sender Policy Framework) — Autoriza qué servidores pueden enviar desde tu dominio. Añade un registro TXT en tu DNS:
v=spf1 include:tuservidorsmtp.com ~allSi usas Mailgun, sería:
v=spf1 include:mailgun.org ~allSi usas Brevo:
v=spf1 include:brevo.com ~allDKIM (DomainKeys Identified Mail) — Firma criptográficamente tus correos. Tu proveedor SMTP (Mailgun, Brevo) te dará una clave pública que debes copiar como un registro CNAME o TXT en tu DNS. Ambos servicios tienen paneles visuales paso a paso para esto.
Cómo verificar que SPF/DKIM funcionen: Usa check.live-direct-marketing.online para enviar un correo de prueba desde tu formulario. La herramienta te mostrará si SPF/DKIM pasan la validación y dónde termina tu correo (Inbox, Spam, Promotions).
Solución 5: Comprobar los ajustes de Contact Form 7
A veces el problema no es la infraestructura, sino cómo está configurado el formulario en sí. Revisa:
- Destinatario (recipient): En la edición del formulario, pestaña "Mail" → recipient debe ser un correo válido (p.ej.,
tu@tudominio.com). Si está vacío o es un email inexistente, los SMTP lo rechazarán. - Asunto (subject): Debe tener contenido; si está vacío, algunos SMTP lo rechazan como mensaje inválido.
- Cuerpo (message body): Verifica que tenga al menos un placeholder como
[your-name]o[your-email], o texto literal. - Codificación: Si ves caracteres rotos (acentos raros), asegúrate de que el formulario sea UTF-8 en los ajustes globales de Contact Form 7.
Prueba de envío rápida: En Contact Form 7 → panel de control → "Send Test Email" (si existe la opción). Si falla aquí, es un problema de configuración del formulario, no del servidor.
Solución 6: Revisar firewall y restricciones del hosting
Algunos hostings (sobre todo los compartidos) bloquean salidas SMTP por defecto para evitar que bots spam usen su infraestructura.
Qué hacer:
- Contacta al soporte de tu hosting → pregunta si el puerto SMTP (587, 465 o 25) está bloqueado en salida.
- Si está bloqueado, pide que lo desbloqueen O sugiere usar un ESP externo (Mailgun, Brevo) que no requiere puertos especiales.
- Si tu hosting es muy restrictivo, considera migrar a uno que permita SMTP sin restricciones (AWS, DigitalOcean, o hostings como SiteGround con plan Business+).
Solución 7: Cambiar a un ESP gratuito como alternativa
Si ninguna solución anterior funciona (o tu hosting es demasiado restrictivo), usa directamente un servicio externo especializado:
- Mailgun (Mailgun.com) — Gratuito hasta 1.000 correos/mes, muy confiable, plugin de WordPress disponible.
- Brevo (Brevo.com) — 300 correos/día gratis, servidor SMTP muy estable, origen francés.
- Mailrelay (Mailrelay.com) — 10.000 correos/mes gratis, 100% español, muy popular en España.
Estos servicios tienen SMTP público de alta entregabilidad, plugins de WordPress listos, y no dependen de las restricciones de tu hosting. Solo necesitas crear una cuenta y usar sus datos de SMTP en WP Mail SMTP.
¿Por qué Contact Form 7 de repente dejó de enviar después de meses funcionando?
wp_mail(), (3) tu servidor IP fue agregada a listas negras de spam, o (4) alcanzaste el límite de correos por hora de tu hosting. La solución es revisar los logs y usar WP Mail SMTP con un proveedor externo confiable como Mailgun o Brevo.¿Puedo usar mi correo de Gmail (usuario@gmail.com) como remitente en Contact Form 7?
noreply@mitienda.com.