Los correos de aviso de nuevos pedidos no llegaban a la bandeja de Gmail de un administrador (ni siquiera a spam, simplemente no llegaban) y lo más frustrante era que la función wp_mail() de WordPress indicaba éxito en cada intento, lo que descartaba los sospechosos habituales: una llamada rota a la función de correo, un conflicto entre plugins o una caída del servidor.
Por qué «dice que se envió» no significa «llegó»
Que wp_mail() devuelva true solo confirma que el mensaje se entregó correctamente al sistema de correo local del servidor para su envío; no dice nada de lo que pasa después, incluido si el servidor receptor (Gmail, en este caso) lo aceptó o lo descartó sin avisar.
La cabecera que escondía el verdadero problema
La causa real estaba en las cabeceras del mensaje: la dirección «From» configurada en WooCommerce era un correo @gmail.com, mientras que el mensaje lo enviaba físicamente el sistema de correo del propio servidor de alojamiento, no Google. Los registros SPF (Sender Policy Framework) de Gmail solo autorizan a la infraestructura de Google a enviar correo que diga venir de una dirección @gmail.com. Un mensaje que dice venir de Gmail pero sale de un servidor ajeno no supera esa comprobación, y las defensas antispam de Gmail tratan un SPF fallido en un mensaje que suplanta una de sus propias direcciones como una señal clara de suplantación, sobre todo cuando el destinatario también es una dirección de Gmail.
Resultado: el mensaje se descartaba o se filtraba como spam mucho antes de llegar a una bandeja, y por eso ni siquiera aparecía en spam.
La solución de una línea
El dominio de la propia tienda ya tenía un registro SPF válido que autorizaba a los servidores de correo de su proveedor de alojamiento; simplemente no se usaba, porque la dirección «From» apuntaba a Gmail. Cambiar la dirección «From» de los correos de WooCommerce a un dominio para el que el servidor está realmente autorizado (orders@[storedomain].com) lo resolvió de inmediato: un correo de pedido de prueba llegó a la bandeja en menos de un minuto, sin plugins nuevos, sin relé SMTP y sin cambios de DNS.
Conclusiones clave
- «La función devolvió éxito» y «el correo se entregó» son dos afirmaciones distintas: para diagnosticar la entregabilidad hay que revisar la autenticación, no solo la llamada de envío.
- Usar una dirección de Gmail como remitente cuando el mensaje no sale de los servidores de Google es una forma casi segura de fallar el SPF y acabar filtrado sin avisar.
- Revise el registro SPF existente del dominio antes de instalar un nuevo plugin SMTP: a menudo la autorización ya existe y simplemente no se está usando.
Lecturas relacionadas: qué incluye realmente el mantenimiento web, un error 403 intermitente causado por el TTL de la caché.
¿Se encuentra con una limitación parecida en su panel de WooCommerce o WordPress? Hablemos: en ArtinTech Solution creamos exactamente este tipo de herramientas a medida para tiendas.