En esta páginaCómo envía emails WordPress de forma predeterminada
Un sitio de WordPress envía más emails de los que su propietario cree. La notificación del formulario de contacto. El restablecimiento de contraseña. La bienvenida a nuevos usuarios, el aviso de moderación de comentarios y, en una tienda, cada confirmación de pedido, factura y actualización de envío de WooCommerce. La mayoría de estos emails no los ha diseñado nadie, y nadie los revisa hasta que un cliente escribe para decir que el email del pedido nunca llegó.
Cuando uno de estos emails acaba en spam, comprueba cómo sale el mensaje del servidor antes de modificar el texto. En WordPress, esta parte usa por defecto la opción con peor capacidad de entrega.
Cómo envía emails WordPress de forma predeterminada
WordPress y casi todos los plugins que envían correo, incluidos WooCommerce y los plugins de formularios, usan una única función, wp_mail(). Esta entrega el mensaje a PHPMailer, que de forma predeterminada lo pasa a mail() de PHP, y esta función lo entrega al programa de correo disponible en el servidor de hosting. No hay inicio de sesión en un proveedor de correo, ni firma, ni nada en tu DNS que indique que este servidor puede enviar emails en nombre de tu dominio.
La dirección del remitente que elige es wordpress@ seguida del dominio de tu sitio [WordPress elimina el www. inicial]. Si nunca la has cambiado, eso es lo que tus clientes ven en el campo From, y en muchos sitios nadie ha creado nunca ese buzón.
En un hosting compartido, el mensaje sale desde el servidor del proveedor a través de una dirección IP que comparten muchos otros sitios. Si uno de ellos envía emails a una lista comprada, o sufre un ataque y empieza a distribuir spam, la dirección IP adquiere una mala reputación, y tus emails para restablecer contraseñas salen desde la misma dirección que los suyos.
Por tanto, una instalación predeterminada de WordPress envía correo cuyo SPF no está alineado con tu dominio. La dirección de rebote suele permanecer en el nombre de servidor del propio proveedor de hosting y, si se usa la dirección de tu dominio en su lugar, SPF falla por completo. Tampoco hay una firma DKIM para tu dominio, por lo que DMARC falla. Gmail y Yahoo establecieron sus reglas para remitentes en febrero de 2024. Microsoft hizo lo mismo en mayo de 2025 para los dominios que envían más de 5.000 mensajes al día a Outlook.com y, desde noviembre de 2025, Gmail rechaza una mayor cantidad del correo que incumple sus reglas en vez de enviarlo a spam.
Envía a través de un servicio de correo real
La solución más importante es dejar de usar mail(). Instala un plugin de SMTP (WP Mail SMTP, FluentSMTP y Post SMTP son los más habituales, y todos tienen una versión gratuita) y conéctalo a un servicio que envíe el correo correctamente: tu propio proveedor de correo, como Google Workspace o Microsoft 365, o un servicio transaccional como Amazon SES, Brevo, SendGrid o Mailgun.
El plugin sustituye el transporte que utiliza wp_mail(), por lo que todos los emails de todos los plugins se envían por la nueva vía sin tener que modificar los propios plugins. Si el plugin ofrece una opción de API para el proveedor, úsala en lugar de SMTP con una contraseña. WP Mail SMTP señala que la vía de API funciona incluso cuando tu proveedor de hosting bloquea los puertos SMTP.
Mucha gente se salta el siguiente paso. Autentica el dominio en ese proveedor: cada uno te proporciona registros DNS que debes publicar, normalmente dos o tres registros CNAME para DKIM y una inclusión de SPF o un dominio de ruta de retorno personalizado. Hasta que esos registros estén en tu DNS, el proveedor usa su propio nombre en la firma y DMARC falla igual que en el proveedor de hosting.
La dirección From en los formularios de contacto
Los plugins de formularios, incluidos Contact Form 7 y WPForms, te permiten elegir qué aparece en la línea From de la notificación que recibes. Muchas configuraciones ponen ahí la dirección del visitante, para que al pulsar Reply respondas al visitante. Parece ingenioso, pero es exactamente lo que DMARC se diseñó para impedir.
Supongamos que una visitante llamada Anna escribe desde anna@yahoo.com. Tu sitio envía un mensaje que afirma proceder de yahoo.com mediante un servidor que Yahoo nunca ha autorizado. yahoo.com publica una política DMARC con p=reject, por lo que un receptor que la aplique rechaza la notificación por considerarla falsificada. Con un visitante de Gmail, la política es menos estricta y el mensaje suele acabar en spam. WPForms advierte exactamente de esto en su documentación.From eres tú, Reply-To es el visitante
Configúralo así:
- From: una dirección de tu propio dominio, como
forms@yourdomain.com, el mismo dominio para el que está autenticado tu plugin SMTP. - Reply-To: la dirección del visitante, obtenida del campo del formulario. Al pulsar Reply seguirás respondiendo a Anna.
- To: el buzón que realmente lees.
En Contact Form 7, esto se configura en la pestaña Mail: pon tu propia dirección en From y añade Reply-To: [your-email] en Additional headers. Los demás plugins de formularios tienen un campo Reply-To en la configuración de sus notificaciones.
Emails de WooCommerce
WooCommerce tiene su propia configuración del remitente: WooCommerce, luego Settings, después Emails y, en la sección Email Sender Options, un nombre en "From" y una dirección en "From". De forma predeterminada, la dirección es el email del administrador del sitio. Si la persona que instaló la tienda usó para ello una dirección de Gmail, todas las confirmaciones de pedido se envían afirmando que proceden de gmail.com y no superan DMARC por el mismo motivo que el formulario de contacto anterior. Introduce ahí una dirección de tu dominio autenticado. El nombre de la tienda es una buena opción como nombre del remitente. (En las notificaciones de pedidos que recibes, WooCommerce ya coloca al cliente en Reply-To, que es la forma correcta de hacerlo).
Hay dos problemas con los emails de una tienda que no se producen con un formulario de contacto.
El primero es el volumen. Si una oferta o un plugin de newsletters envía emails a los clientes por la misma ruta que las confirmaciones de pedidos, el correo de marketing y el transaccional comparten una misma reputación. Si la newsletter recibe quejas, los recibos se ven afectados. Enviar ambos tipos de correo mediante servicios distintos los mantiene separados. Usar un subdominio independiente para marketing también ayuda un poco, aunque los receptores siguen teniendo en cuenta en cierta medida la reputación del dominio principal.
El segundo es la cuestión de la cancelación de la suscripción. Las confirmaciones de pedidos y los restablecimientos de contraseña son transaccionales, por lo que la regla de cancelación de suscripción con un clic de Gmail y Yahoo no se aplica a ellos. Una solicitud de reseña, un recordatorio de carrito abandonado o un email de "también podría gustarte" enviado a compradores anteriores es marketing. Si los envías en volumen, la regla se aplica por completo, lo que exige un encabezado List-Unsubscribe con una opción de un solo clic. Comprueba si el complemento que los envía añade ese encabezado. La prueba que aparece a continuación lo muestra en cualquier caso.
La parte de DNS, en términos sencillos
Uses el servicio de envío que uses, tu dominio necesita tres elementos en DNS para que el correo sea de confianza. Tienes una guía completa en Explicación de SPF, DKIM y DMARC; esto es lo que significa para un sitio WordPress.
- SPF. Un registro TXT en tu dominio que indica quién puede enviar correo en su nombre. Muchos servicios de envío no requieren ningún cambio aquí, porque realizan la alineación mediante su propio dominio de rebotes. Si el tuyo solicita un
include:y el dominio ya tiene un registro para tu proveedor de correo, añádelo a ese registro. No crees otro; tener dos registros SPF es un error y ambos dejan de funcionar. Comprueba el resultado con el verificador de SPF. - DKIM. Los registros que te proporcionó tu servicio de envío. Cuando estén activos, el servicio firmará cada mensaje con tu dominio, y esta es la firma que busca DMARC.
- DMARC. Un registro TXT en
_dmarc.yourdomain.com. Empieza conv=DMARC1; p=none; rua=mailto:y una dirección que leas, y después aplica una política más estricta cuando los informes muestren que ninguno de tus mensajes falla. El verificador de DMARC lee tu configuración actual.
Ten en cuenta que el servidor de alojamiento aún puede estar enviando algo por su cuenta, por ejemplo, una tarea cron o un plugin antiguo que llame directamente a mail() en lugar de a wp_mail(). Esos mensajes omiten el plugin SMTP, y los informes DMARC los mostrarán como una fuente que no esperabas.
Probar los emails reales, no un mensaje de prueba
Todos los plugins SMTP tienen un botón "send test email", y lo único que demuestra es que la conexión funciona. No te muestra la confirmación del pedido tal como la genera WooCommerce, la notificación del formulario con su Reply-To ni el restablecimiento de contraseña con el enlace que WordPress incluye.
Por eso hago que WordPress envíe los emails reales. Una dirección de prueba de la página de inicio acepta un mensaje, así que obtén una dirección nueva para cada email que quieras comprobar. Para el formulario, usa temporalmente la dirección como destinatario de la notificación y envía el formulario. Para WooCommerce, haz un pedido de prueba usando la dirección como email del cliente. Para el restablecimiento de contraseña, asigna la dirección a un usuario de prueba y solicita un restablecimiento. Cada mensaje obtiene su propio informe, con SPF, DKIM y DMARC y su alineación, 21 listas de bloqueo, contenido y enlaces, y las reglas para remitentes masivos. Para comprobar la carpeta en Gmail, Outlook, Yahoo y otros proveedores, hay que enviar el mismo mensaje a una lista de bandejas de entrada con una marca en el asunto. Como un formulario o un pedido de una tienda no pueden hacerlo, deja esa parte para los emails que envíes tú mismo.
Si prefieres no crear pedidos de prueba manualmente, el plugin de WordPress gratuito envía estos mensajes mediante el propio wp_mail() de tu sitio, la misma ruta que siguen los emails de tus clientes, y muestra el resultado en el panel. También detecta cuando el sitio empieza a enviar un tipo de email que no había visto antes.
Cuando sigue llegando a spam
Si la autenticación es correcta, la dirección From pertenece a tu dominio y el email sigue llegando a spam, comprueba la reputación de la infraestructura mediante la que envías. Una IP de alojamiento compartido incluida en una lista de bloqueo es una causa habitual si sigues usando mail(), y el comprobador de listas de bloqueo te lo mostrará. El contenido influye menos de lo que la gente suele pensar. Una notificación de formulario con un solo enlace y tres líneas de texto rara vez activa un filtro por sí sola. Un email de WooCommerce con una plantilla HTML pesada, una imagen grande y un acortador de enlaces sí puede hacerlo.
Comprueba un mensaje, corrige lo que indique el informe y vuelve a enviarlo a una dirección nueva.