← volver Dibujo de líneas de un formulario web con un sobre en una ruta de puntos rotos dirigiéndose a un buzón vacío

¿Contact Form 7 no envía correos? Arréglalo en este orden

WordPress

Los correos de Contact Form 7 suelen desaparecer por cómo WordPress los envía, no por el formulario en sí. Por defecto, WordPress entrega el mensaje a la función PHP mail en tu servidor web, y WP Mail SMTP dice que sin autenticación adecuada esos mensajes terminan en spam o desaparecen. Aquí obtienes una lista de diagnóstico ordenada de la causa más probable a la menos probable, la solución SMTP y los registros DNS que la acompañan, la trampa de filtro de spam, una forma de guardar una copia de cada consulta, y cómo los formularios en sitios headless evitan todo el problema.

Por qué los correos de Contact Form 7 desaparecen

Contact Form 7 no envía correos por sí solo. Construye el mensaje y lo entrega a WordPress, que lo envía con wp_mail(). De serie, según el listado de WP Mail SMTP, WordPress usa la función PHP mail para cualquier cosa generada por WordPress o un plugin de formulario de contacto. Esa función envía el mensaje a través del servidor que aloja tu sitio. Ese servidor a menudo no puede probar quién es realmente quien envía el correo.

Los servidores receptores verifican esa prueba. El mismo listado dice que Gmail, Yahoo, Office 365 y Zoho comprueban si el correo proviene de un remitente genuino, y cuando no hay autenticación, el correo va a spam o desaparece. También afirma que la mayoría de las empresas de hosting WordPress no tienen sus servidores configurados correctamente para PHP mail. Tómalo como una afirmación del proveedor, porque el proveedor vende la solución, y como un patrón común, no como un veredicto sobre ningún host en particular. Muchos hosts manejan el correo perfectamente bien.

La evidencia del foro apunta en la misma dirección. En un hilo de soporte de mayo de 2024, la lectura de un moderador fue que WordPress probablemente estaba enviando correos directamente sin autenticación, y el servidor de correo lo reconoció y lo clasificó como spam. La persona que preguntó ya había cambiado la dirección De, la marcó como VIP y escribió una regla de correo. Aun así, basura. Eso te dice algo: cuando tus propias reglas de bandeja de entrada no ayudan, la falla está aguas arriba de tu bandeja de entrada.

Un punto de datos más. Contact Form 7 muestra más de 10 millones de instalaciones activas en su listado de WordPress.org. El listado de otro plugin dice más de 5 millones, así que las fuentes no coinciden en el número, pero de cualquier forma es una base de instalación grande. Eso significa que la misma falla se reporta de cien formas diferentes.

Verificaciones rápidas antes de tocar cualquier otra cosa

Dedica cinco minutos aquí antes de leer un solo registro DNS.

Lee el mensaje de respuesta

La propia FAQ de Contact Form 7 es contundente: un borde rojo significa que el plugin intentó enviar con wp_mail() y falló, y necesitas encontrar la razón real. La misma página cubre el caso opuesto, un "Gracias por tu mensaje. Ha sido enviado." en verde donde el correo nunca llega. También hay un detalle: el mensaje predeterminado "Hubo un error al intentar enviar tu mensaje." aparece tanto cuando el envío falló por cualquier motivo como cuando se detectó actividad de spam. Esa sola oración no puede decirte cuál problema tienes.

Revisa la pestaña Mail

Abre Contacto, elige el formulario y luego abre la pestaña Mail. Dos campos importan más. La dirección Para debe ser un buzón que realmente lees, sin errores tipográficos. La dirección De debe usar tu propio dominio. Una dirección De que usa el correo del visitante parece una falsificación a un servidor receptor, porque técnicamente lo es. Pon la dirección del visitante en un encabezado Reply-To en su lugar, así aún puedes responder.

Busca en spam y luego piensa en el cronograma

Revisa la carpeta de correo no deseado del buzón receptor y cualquier regla de filtrado en él. Si los mensajes están allí, tienes un problema de entregabilidad en lugar de un problema de entrega. Eso necesita una solución diferente.

La lista de diagnóstico, causa más probable primero

  1. La pestaña Mail es incorrecta. Verifica: dirección Para, dirección De, un error tipográfico extraño. Solución: usa una dirección real en tu dominio en De y mueve la dirección del visitante a Reply-To.
  2. El mensaje está en correo no deseado. Verifica: carpeta de spam, cuarentena, reglas de buzón compartido. Solución: si está allí, ve al paso 4. Marcar remitentes como seguros raramente funciona para correo sin autenticación.
  3. El formulario muestra un borde rojo. Verifica: el mensaje de respuesta y la entrada de FAQ de Contact Form 7 sobre él. Solución: esto significa que wp_mail() falló, así que el problema está con la configuración de correo del sitio. Ve al paso 4.
  4. WordPress envía por PHP mail sin autenticación. Verifica: ¿estás usando un plugin SMTP o un servicio de correo en absoluto? Solución: instala uno y envía un correo de prueba (siguiente sección).
  5. Los registros DNS faltan o son incorrectos. Verifica: SPF, DKIM y DMARC en el dominio de envío. Solución: agrega los registros que tu proveedor de correo te proporcione.
  6. Un filtro de spam está rechazando mensajes reales. Verifica: desactiva temporalmente el captcha o la integración de Akismet y reenvía. Solución: ajusta la integración, no dejes el formulario sin protección.
  7. Algo más en el sitio está interfiriendo. Verifica: cambia a un tema predeterminado, desactiva otros plugins, borra cachés. Solución: reactiva uno a la vez hasta que se rompa de nuevo.
  8. Una actualización reciente cambió algo. Verifica: tu versión de PHP contra el requisito que indica el plugin. Solución: consulta las preguntas frecuentes abajo.

La mayoría se detiene en el paso 4. Generalmente es lo correcto. La lista está ordenada por una razón: no compres un servicio de correo para corregir un error tipográfico.

La solución confiable: autenticación de envíos y registros DNS

La reparación confiable es dejar de usar PHP mail sin autenticar. Envía por SMTP, o a través de un servicio de correo transaccional, un servicio creado para enviar correos automatizados como notificaciones de formularios, usando un plugin como WP Mail SMTP. Según su ficha, el plugin reconfigura wp_mail() para usar credenciales de host SMTP o un proveedor de correo. Con las integraciones de proveedor que recomienda, el correo va a través de la API directa del proveedor, que según la ficha funciona incluso cuando tu host de web bloquea puertos SMTP.

Dibujo de líneas de un sobre pasando una puerta con candado en su camino a una bandeja de entrada

Algunas notas honestas sobre el plugin:

  • Opción de mailer. La ficha marca SendLayer, SMTP.com y Brevo como recomendados. Configuración de un clic de Microsoft, Amazon SES y Zoho Mail están marcados como Pro. Gmail SMTP, Mailgun, SendGrid, Postmark y otros están en la lista gratuita.
  • Asignaciones gratuitas. La ficha cita 300 correos gratuitos diarios para Brevo y hasta 100 diarios para SendGrid. Son cifras que declara el vendedor del plugin, así que verifica la página de cada proveedor antes de confiar en ellas. Un formulario de contacto en un sitio pequeño envía un puñado de mensajes, así que los límites rara vez afectan, pero deberías saber dónde están.
  • Conflicto de intereses. Es propiedad y está mantenido por el equipo detrás de WPForms, un constructor de formularios competidor. Eso no impide que funcione con Contact Form 7, y es de lo que trata el artículo de Contact Form 7 del vendedor. Otros plugins SMTP existen si prefieres no usarlo.
  • El registro es de pago. Registros de correo, reenvío, alertas y una conexión de respaldo se listan como características Pro, un plugin de pago separado. La versión gratuita envía. No mantiene un registro.

La configuración es sencilla. Elige un mailer, establece la dirección De a una en un dominio que controles, envía el correo de prueba desde el plugin, luego envía tu formulario real. El plugin también ejecuta una verificación de dominio: cuando envías un correo de prueba y al final del Asistente de configuración, envía la dirección De, mailer y dominio de envío para verificar los registros DNS del dominio, y Herramientas > Salud del sitio muestra el último resultado. Ten en cuenta dónde van tus datos si te importa.

SPF, DKIM y DMARC en términos simples

Estos son tres registros DNS, y son lo que convierte "enviado" en "confiable".

  • SPF enumera qué servidores están autorizados a enviar correo para tu dominio.
  • DKIM añade una firma a cada mensaje, verificada contra una clave pública que publicas en DNS.
  • DMARC dice a los servidores receptores qué hacer cuando esas verificaciones fallan, y dónde enviar reportes.

La pantalla de configuración de tu proveedor de correo te da los registros exactos para pegar, así que no inventaré ninguno aquí. Un punto práctico: si tu dominio ya tiene un registro SPF, edítalo en lugar de añadir un segundo. El DNS vive donde los nameservers de tu dominio apunten, lo que podría ser tu registrador, tu host o un servicio como Cloudflare. ¿No estás seguro? Primero mira los nameservers. Ahorra muchas ediciones en el panel incorrecto.

Filtros de spam y falsos positivos

Contact Form 7 puede emparejarse con protección de spam como reCAPTCHA y Akismet. Eso es sensato, genuinamente, un formulario público sin protección atrae basura rápidamente. Pero cualquier filtro que puntúe envíos puede puntuar uno real incorrectamente, y entonces tu consulta se descarta silenciosamente. Recuerda el punto de preguntas frecuentes de antes: el mismo error en pantalla cubre tanto fallo de correo como detección de spam.

La prueba es simple. Apaga la integración un momento, envía un mensaje realista desde un dispositivo diferente, y comprueba si llega. Si lo hace, el filtro era el problema. Aflójalo, no lo elimines.

Estos son los lugares donde un mensaje legítimo puede descartarse:

  • El captcha puntúa al visitante como un bot, y el formulario lo rechaza
  • Akismet marca el mensaje como spam antes de que llegue al paso de correo
  • Un plugin de caché u optimización rompe el script que el formulario necesita
  • El buzón receptor lo filtra después de la entrega

A veces no es ninguno de esos. Un hilo de foro describe el error 'Failed to send your message. Please try later or contact the administrator by another method.' con un estado AJAX de 200 y reCAPTCHA v3 funcionando. El autor del plugin, Takayuki Miyoshi, pidió el tema y los plugins, sugirió cambiar al tema por defecto, desactivar otros plugins y borrar cachés, y señaló que un fallo registrado con SMTP activado o desactivado sugiere que SMTP es poco probable que sea la causa. Consejo aburrido. A menudo, el consejo correcto.

Guarda una copia de cada envío

La mayoría de los dueños se enteran demasiado tarde: el correo es una notificación, no un registro. Si el correo falla, la consulta desaparece, y el visitante vio un mensaje educado de 'enviado'. Nunca lo sabrás.

La solución es guardar cada envío también en la base de datos. Muchos complementos de Contact Form 7 hacen esto. Como ejemplo, el plugin Contact Form to Any API incluye guardar los envíos de Contact Form 7 en la base de datos, con exportación a CSV, Excel, PDF e impresión. También puede enviar los envíos a APIs remotas, por ejemplo un CRM, mediante POST o GET, con hasta 5 conexiones de API. Su versión 3.0.6, con fecha del 8 de julio de 2026, añadió notificaciones por correo electrónico cuando falla una solicitud a la API y una limpieza automática del registro, con un valor predeterminado de 90 días.

Ese último detalle es un recordatorio útil. Las consultas guardadas son datos personales, así que decide cuánto tiempo las mantienes. Una entrada guardada solo ayuda si alguien abre la lista de vez en cuando, así que pon una verificación recurrente en el calendario. El registro de WP Mail SMTP Pro de pago mencionado antes registra correos enviados, lo cual es práctico, pero no es lo mismo que guardar lo que el visitante envió.

Cómo los sitios sin cabecera y estáticos manejan formularios

Un sitio estático o sin cabecera no tiene PHP ni wp_mail(). El formulario se envía a otro lugar: un endpoint ejecutado por un servicio de formularios como Formspree, el manejo de formularios nativo de una plataforma de alojamiento, o una función sin servidor que escribes. El envío se guarda primero. El correo se convierte en una notificación entre varias, no la única copia.

Netlify Forms es un ejemplo claro. Después de habilitar la detección de formularios, agregar data-netlify="true" o un atributo netlify a un formulario HTML te permite recibir envíos en el panel de administración del sitio de Netlify, sin una llamada API adicional ni JavaScript. Algunos detalles específicos de la documentación:

  • El envío por AJAX necesita un cuerpo codificado en URL. Netlify Forms no admite datos de formulario JSON en este momento.
  • Las cargas de archivos permiten un archivo por campo, un máximo de solicitud de formulario de 8 MB, y un tiempo de espera de 30 segundos.
  • Si tu formulario se renderiza por JavaScript o un marco de servidor como Next.js, debes incluir un formulario HTML que cumpla con los criterios de Netlify, porque su construcción encuentra formularios analizando el HTML del sitio.

Las notificaciones son independientes del almacenamiento. Según los documentos de notificaciones, pueden ir a correo, webhooks o un espacio de trabajo de Slack, para un formulario o todos los formularios. Por defecto, los correos vienen de formresponses@netlify.com, y las respuestas van a esa dirección a menos que agregues una entrada llamada email, que establece el valor Reply-to. La misma lección que antes: incluso aquí, un correo de notificación tiene particularidades que querrías probar.

Si estás decidiendo si una configuración de formulario como esta se adapta a tu sitio, el asesor de stack de WordPress es una forma rápida de ver dónde se encuentra tu compilación actual.

Cuándo quedarse con WordPress es lo correcto

Para la mayoría de los sitios pequeños de negocios, quedarse es está bien. Un formulario de contacto es una característica pequeña. Si agregas envío autenticado, registros DNS correctos y una copia guardada de cada entrada, los formularios de WordPress son tan confiables como los de cualquier otro. Cambiar de plataforma para solucionar un problema de correo es como reemplazar el coche porque el bombillo del indicador se quemó. Si tienes curiosidad sobre la pregunta más amplia, hay un artículo sobre dejar WordPress y un resumen de alternativas, pero ninguno es una razón para apresurarse.

FAQ

Mi correo de prueba SMTP funciona pero el formulario aún no se envía. ¿Por qué?

Eso significa que el correo sale de tu sitio bien, así que el fallo está en algún lugar entre el formulario y wp_mail(). Los usuarios del foro informan exactamente esto. Uno dijo que el correo de prueba SMTP estaba bien pero ningún formulario se envió, y eliminar el captcha no ayudó. Otro informó que, después de enrutar el correo a través de WP Mail SMTP, otros correos funcionaban pero Contact Form 7 no se entregaba en tres formularios, y la primera pregunta del autor del plugin fue dónde se ubicaba el formulario en el sitio, ver el hilo de mayo de 2026. Sigue los pasos de aislamiento: tema por defecto, otros plugins apagados, cachés borrados.

¿Necesito WP Mail SMTP Pro?

No, no para solucionar la entrega. El plugin gratuito hace el envío. Pro es un plugin de pago separado que agrega registro de correo, reenvío, alertas y una conexión de respaldo. Vale la pena considerarlo si quieres un registro de fallos, pero un complemento de base de datos para los envíos también cubre el riesgo de cliente perdido.

Mis formularios se detuvieron justo después de una actualización. ¿Podría ser PHP?

Posiblemente. El listado del plugin muestra PHP 8.3 o superior como un requisito para la versión 6.2.3. Dos revisores en el listado dicen que el mínimo subió de 7.4 a 8.3 en la versión 6.2, y uno reporta una actualización automática que rompió un sitio que ejecutaba PHP 8.0. Esos son reportes de usuarios, no una declaración del mantenedor. Verifica tu versión de PHP en el panel de control de tu alojamiento, y haz una copia de seguridad antes de actualizar cualquier cosa.

El hecho más útil: Contact Form 7 entrega el correo a WordPress, y WordPress por defecto lo envía sin autenticar a través de PHP mail, así que SMTP autenticado más registros DNS correctos soluciona el caso usual. La advertencia más importante es que el correo solo nunca es un registro, así que guarda cada envío también. Si la solución no funciona, sospecha del entorno del formulario, no del servidor de correo.

← volver