Knowledge Base Guide

Entregabilidad de email PrestaShop: SMTP, SPF, DKIM y configuración de emails transaccionales

Evite que los emails de PrestaShop lleguen a spam — configure SMTP, SPF/DKIM/DMARC, servicios de email transaccional y ajustes de correo en PS 8/9.

Por qué los correos de PrestaShop terminan en spam

Su cliente realiza un pedido. El correo de confirmación nunca llega — o termina en spam. Le contactan, confundidos. Usted revisa PrestaShop: el correo fue “enviado.” La entregabilidad del correo no depende de si PrestaShop envía el correo — depende de si el servidor de correo del destinatario lo acepta y lo coloca en la bandeja de entrada.

PHP mail() — El valor predeterminado que nadie debería usar

Una instalación nueva de PrestaShop utiliza la función integrada mail() de PHP. Esta es la peor opción para una tienda en producción:

  • Sin autenticación: El correo se envía sin prueba de que usted lo autorizó. Gmail, Outlook y Yahoo tratan el correo no autenticado como sospechoso.
  • Reputación de IP compartida: En hosting compartido, sus correos provienen de la misma IP que todos los demás sitios. Si alguno envía spam, sus correos son penalizados.
  • Sin firma DKIM: PHP mail() no firma los mensajes criptográficamente.
  • Cabeceras faltantes: Las cabeceras mínimas hacen que los filtros antispam marquen el mensaje de inmediato.
Si su tienda usa PHP mail() en este momento, cambie a SMTP antes de hacer cualquier otra cosa. Este único cambio solucióna más problemas de entregabilidad que todos los demás pasos combinados.

Causas comunes de spam

  • Dirección From no coincidente: Envía desde noreply@yourstore.com pero su servidor no tiene un registro SPF que lo permita.
  • Plantillas con exceso de HTML: Las plantillas de PrestaShop tienen muchas imágenes. Una alta proporción de imágenes respecto al texto activa los filtros.
  • Falta la alternativa en texto plano: PS envía ambas versiones, pero las plantillas personalizadas o los módulos a veces rompen la parte de texto plano.
  • Enlaces rotos: Los filtros antispam siguen los enlaces. Si la URL de su tienda es inaccesible (error SSL, modo mantenimiento), el correo se marca.
  • Problemas de codificación: Las tiendas que usan polaco, checo u otros caracteres diacríticos producen caracteres ilegibles cuando la codificación es incorrecta.

Configuración de correo en PrestaShop

La ubicación de los ajustes de correo ha cambiado y la biblioteca subyacente cambió significativamente en la versión 9.

PrestaShop 1.6 y 1.7

Navegue a Advanced Parameters → E-mail. Seleccione “Set my own SMTP parameters” y complete el servidor, puerto, cifrado, nombre de usuario y contraseña. PS 1.6 usa el manejo SMTP integrado de PHP; PS 1.7 introdujo Swift Mailer para conexiónes más fiables. Opciones de cifrado:

  • TLS (puerto 587): Estándar moderno que usa STARTTLS. Esto es lo que usted necesita.
  • SSL (puerto 465): TLS implícito heredado. Algunos hosts antiguos lo requieren.
  • Ninguno (puerto 25): Sin cifrar. Nunca use esto.

PrestaShop 8.x

Misma ubicación, misma interfaz. PS 8 usa la versión final de Swift Mailer con informes de errores mejorados. Los errores SMTP se registran con más contexto en var/logs/.

PrestaShop 9.x — Symfony Mailer

PS 9 reemplaza el obsoleto Swift Mailer con Symfony Mailer. La interfaz de administración se ve similar, pero la capa de transporte es completamente diferente:

  • Formato DSN: Internamente usa smtp://user:password@server:port.
  • Manejo de TLS: Detecta automáticamente STARTTLS en el puerto 587. El desplegable de “cifrado” puede comportarse diferente después de actualizar desde PS 8.
  • Validación más estricta: Symfony Mailer es más estricto sobre la coincidencia del remitente del sobre con la cabecera From y los certificados TLS.
  • Compatibilidad de módulos: Los módulos que hacen referencia a Swift_Message o Swift_SmtpTransport dejarán de funcionar en PS 9.
# PS 9 internal DSN examples (configured via admin UI)
smtp://user:password@mail.example.com:587      # STARTTLS
smtps://user:password@mail.example.com:465     # Implicit TLS
smtp://your%40gmail.com:app-pass@smtp.gmail.com:587  # Gmail
native://default                                # PHP mail() (not recommended)
Después de actualizar a PS 9, siempre vuelva a probar el correo. La migración de Swift Mailer a Symfony Mailer puede exponer casos especiales con certificados autofirmados, puertos no estándar o servidores SMTP implementados de manera flexible.

El botón de correo de prueba

Cada versión de PS tiene “Enviar un correo de prueba.” Úselo, pero entienda que confirma que la conexión SMTP funciona — no que el correo llegue a la bandeja de entrada. Envía texto simple, no el HTML enriquecido de las confirmaciones de pedido. Pruebe con Gmail, Outlook y su propio dominio.

Autenticación de dominio — La Santísima Trinidad

SPF, DKIM y DMARC son autenticaciónes basadas en DNS que demuestran que sus correos son legítimos. Gmail y Yahoo hicieron SPF y DKIM obligatorios para remitentes masivos en febrero de 2024.

SPF (Sender Policy Framework)

SPF indica a los servidores receptores qué IPs pueden enviar correo en nombre de su dominio — un único registro TXT en DNS.

# Basic — allows hosting + Google
v=spf1 include:_spf.google.com include:your-hosting-provider.com ~all

# OVH
v=spf1 include:mx.ovh.com ~all

# Hostinger
v=spf1 include:_spf.hostinger.com ~all

# With Mailgun
v=spf1 include:mailgun.org include:_spf.google.com ~all

Errores comunes:

  • Múltiples registros SPF: Solo UN registro TXT SPF por dominio. Dos registros = ambos inválidos. Combine servicios con múltiples directivas include:.
  • Demasiadas consultas DNS: SPF permite un máximo de 10 consultas (cada include: cuenta, las anidadas también). Use validadores SPF para verificar.
  • +all en lugar de ~all: +all permite que cualquiera envíe como su dominio. Use ~all (softfail) durante la configuración, luego -all (hardfail) para producción.
  • Olvidar los subdominios: SPF para shop.example.com necesita su propio registro — no hereda de example.com.

DKIM (DomainKeys Identified Mail)

DKIM añade una firma criptográfica a cada correo saliente. PrestaShop no maneja DKIM — su proveedor de hosting, relay SMTP o servicio transaccional realiza la firma. Usted publica la clave pública en DNS.

  • Hosting compartido (cPanel/Plesk): Normalmente se habilita automáticamente. Verifique en cPanel → Email Deliverability.
  • Gmail/Google Workspace: Consola de administración → Gmail → Autenticar correo. Google proporciona un registro TXT.
  • Servicios transaccionales: Cada uno proporciona registros DNS durante su asistente de verificación de dominio.
# DKIM TXT record example
# Name: default._domainkey.yourstore.com (selector varies by provider)
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...

DMARC (Domain-based Message Authentication, Reporting, and Conformance)

DMARC une SPF y DKIM e indica a los servidores qué hacer cuando la autenticación falla.

# Stage 1: Monitor only
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourstore.com;

# Stage 2: Quarantine failures
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@yourstore.com;

# Stage 3: Reject failures (maximum protection)
v=DMARC1; p=reject; rua=mailto:dmarc-reports@yourstore.com;

La etiqueta rua envía informes agregados — archivos XML que muestran quién envía correo como su dominio. Use Postmark DMARC monitoring para convertirlos en paneles legibles.

Implementación recomendada: p=none durante 2-4 semanas mientras lee los informes. Corrija los remitentes legítimos que fallen. Pase a p=quarantine durante 2-4 semanas. Luego p=reject. Pasar directamente a reject el primer día bloquea correos que usted no sabía que existían.

Configuración SMTP para hosting compartido

La mayoría de las tiendas PrestaShop funcionan en hosting compartido. Cree una cuenta de correo dedicada (por ejemplo, orders@yourstore.com) y use esas credenciales.

Configuraciones por proveedor

# Generic cPanel
Server: mail.yourstore.com | Port: 587 | Encryption: TLS

# OVH
Server: ssl0.ovh.net | Port: 587 | Encryption: TLS

# Hostinger
Server: smtp.hostinger.com | Port: 587 | Encryption: TLS

# SiteGround
Server: yourstore.com | Port: 465 | Encryption: SSL

# Bluehost
Server: mail.yourstore.com | Port: 465 | Encryption: SSL

Gmail SMTP

Requiere una Contraseña de aplicación (Cuenta de Google → Seguridad → Verificación en dos pasos → Contraseñas de aplicación).

Server: smtp.gmail.com | Port: 587 | Encryption: TLS
Username: your@gmail.com | Password: (16-char App Password)

Límites: Gmail gratuito: 500/día. Google Workspace: 2.000/día. Enviar demasiado rápido activa bloqueos temporales.

Gmail SMTP funciona para tiendas con menos de 30 pedidos/día. Más allá de eso, alcanzar los límites significa que los clientes esperan hasta 24 horas para recibir confirmaciones de pedido.

Microsoft 365 SMTP

Server: smtp.office365.com | Port: 587 | Encryption: TLS
Username: your@yourstore.com | Password: account or App Password

Límite: 10.000 destinatarios/día, 30 mensajes/minuto. Microsoft ha exigido cada vez más OAuth sobre la autenticación SMTP básica — verifique la configuración de su tenant.

Servicios de correo transaccional

Cuando su tienda supera el SMTP del hosting, estos servicios proporcionan infraestructura dedicada de alta reputación, firma DKIM, manejo de rebotes y análisis de entrega.

Cuándo cambiar

  • Está alcanzando los límites de envío del hosting
  • Los correos llegan a spam a pesar de tener registros DNS correctos
  • Necesita seguimiento de entregas y gestión de rebotes
  • La reputación de IP del hosting compartido le está perjudicando

Comparación de servicios

Mailgun — Desde $15/mes por 10K correos. Excelente API, análisis detallados. SMTP: smtp.mailgun.org:587.

Postmark — Desde $15/mes por 10K correos. Las tasas de llegada a bandeja de entrada más altas de la industria. Separa correo transaccional del marketing. SMTP: smtp.postmarkapp.com:587. Use el Server API Token como nombre de usuario y contraseña.

Amazon SES — $0,10 por cada 1.000 correos. El más económico a escala. Cree credenciales SMTP en la consola de SES (no claves de acceso de AWS). Las cuentas nuevas comienzan en modo sandbox. Servidor específico por región: email-smtp.eu-west-1.amazonaws.com:587.

SendGrid — Nivel gratuito: 100/día. De pago desde $19,95/mes. El nombre de usuario es literalmente apikey, la contraseña es su clave API. SMTP: smtp.sendgrid.net:587. Las IPs compartidas del nivel gratuito tienen mala reputación — presupueste el plan de pago.

Brevo — Nivel gratuito: 300/día. De pago desde $9/mes. Newsletter/CRM integrado, con sede en la UE (RGPD). SMTP: smtp-relay.brevo.com:587. Tiene un plugin dedicado para PrestaShop.

Recomendación: Brevo si también quiere correo de marketing. Postmark si la entregabilidad transaccional es su prioridad. Amazon SES para alto volumen con presupuesto ajustado. Mailgun como opción polivalente.

Integración

Todos funcionan a través de SMTP estándar — no se requieren módulos: (1) verifique su dominio, (2) añada sus registros DNS (SPF, DKIM), (3) genere credenciales SMTP, (4) ingréselas en la configuración de correo de PrestaShop, (5) pruebe.

Correo autohospedado (avanzado)

Ejecutar su propio servidor de correo le da control total — sin límites de terceros, sin tarifas por correo, privacidad completa. Nosotros utilizamos Mailcow. Pero el costo en tiempo y experiencia es real.

Cuándo tiene sentido

  • Privacidad: Todos los datos de correo permanecen en su servidor. Importante bajo un RGPD estricto.
  • Volumen: Con más de 100K correos/mes, un VPS de $40/mes supera a cualquier servicio transaccional.
  • Control: Reglas personalizadas, sin límites arbitrarios, sin suspensiones de cuenta.

Cuándo no tiene sentido

  • Sin experiencia en administración de sistemas: Un servidor de correo mal configurado es peor que el hosting compartido.
  • IPs nuevas: Construir reputación desde cero toma semanas. Los servicios transaccionales le dan reputación establecida de inmediato.
  • Sin registro PTR: Sin DNS inverso, la mayoría de los servidores rechazan su correo directamente.
  • Carga de mantenimiento: Parches, certificados, monitoreo de listas de bloqueo, registros — trabajo continuo.

Opciones

Mailcow: Basado en Docker, incluye webmail, antispam, antivirus, autodiscover. Necesita 4GB+ de RAM. Nuestra elección.

Mail-in-a-Box: Todo en uno en un servidor Ubuntu dedicado. Más simple pero se apodera de la máquina.

iRedMail: Postfix+Dovecot tradicional. El más flexible, el más ligero, el más manual.

Comience ejecutando correo autohospedado para su propio negocio durante 3 meses antes de enrutar el correo de tiendas de clientes a través de él. Construya reputación gradualmente. Mantenga un servicio transaccional como respaldo.

Tipos de correo en PrestaShop

Críticos — Deben llegar de inmediato

  • Confirmación de pedido (order_conf): El correo más importante. Si este llega a spam, espere contracargos y pérdida de confianza.
  • Confirmación de pago (payment): Los clientes están ansiosos hasta que ven este correo.
  • Restablecimiento de contraseña (password_query): Sensible al tiempo. Si tarda 10 minutos, el cliente se va.
  • Creación de cuenta (account): La primera impresión de su tienda.

Importantes — Deben llegar con prontitud

  • Notificación de envío (shipping): Contiene información de seguimiento.
  • Actualizaciones de estado del pedido (order_changed): En procesamiento, enviado, entregado.
  • Factura y reembolso: Necesarios para B2B y como garantía.
Separe el correo transaccional del de marketing. Use su dominio principal para correos de pedidos y un subdominio (news@mail.yourstore.com) para newsletters. Esto evita que las quejas de spam por newsletters dañen la reputación de sus confirmaciones de pedido.

Las plantillas se encuentran en mails/{iso_code}/. Cada una tiene una versión HTML (.html) y una de texto plano (.txt). Mantenga siempre ambas — la falta de una alternativa en texto plano es una señal de spam.

Selección de hosting para correo

Limitaciones del hosting compartido

  • Reputación de IP compartida: Usted comparte una IP con más de 200 sitios. Si alguno envía spam, su correo es penalizado. No puede controlar esto.
  • Límites de envío: Típicamente 100-500/hora y 500-5.000/día. Las ventas flash y newsletters agotan esto rápidamente.
  • Sin IP dedicada: No disponible en hosting compartido. Punto.
  • Control DNS limitado: Algunos hosts económicos restringen registros personalizados de DKIM, TXT o PTR.
  • Puertos bloqueados: Algunos hosts bloquean el puerto saliente 587, impidiendo la conexión con servicios transaccionales.

Ventajas de un VPS

  • IP dedicada con su propia reputación
  • Sin límites artificiales de envío
  • Registro PTR (DNS inverso) — esencial para la entregabilidad
  • Control DNS completo, cualquier servidor de correo que desee

Señales de alerta

  • “Correo ilimitado”: Eso no existe en hosting compartido.
  • Sin soporte DKIM: Busque otro proveedor.
  • Puerto 587 bloqueado: No puede usar servicios transaccionales.
  • IPs en listas de bloqueo: Verifique en MXToolbox antes de comprometerse.
Mejor estrategia para hosting compartido: omita por completo el correo del host. Use un servicio transaccional vía SMTP. Su tienda envía a través de su infraestructura de alta reputación, evitando completamente el problema de la IP compartida.

Novedades en PrestaShop 8 y 9

PS 8: Último Swift Mailer

PS 8 usa la última versión estable de Swift Mailer 6.x. Negociación TLS mejorada, mejores registros de errores en var/logs/, y metadatos de correo en ps_mail. Prueba por CLI: php bin/console prestashop:mail:test recipient@example.com.

PS 9: Symfony Mailer

Reemplazo completo de la capa de transporte. Cambios clave:

  • Distingue smtp:// (STARTTLS, puerto 587) de smtps:// (TLS implícito, puerto 465)
  • Más estricto sobre la coincidencia del remitente del sobre con la cabecera From
  • Validación de certificados TLS más estricta — certificados autofirmados que funcionaban en PS 8 pueden fallar
  • Los módulos que usan clases de Swift Mailer (Swift_Message, etc.) dejan de funcionar y necesitan actualizarse
# PS 9 email via environment variables (advanced)
# .env.local — overrides admin panel settings
MAILER_DSN=smtp://user:password@smtp.example.com:587
MAILER_DSN=smtp://user%40gmail.com:app-pass@smtp.gmail.com:587
# Special chars must be URL-encoded: @ = %40, : = %3A

Para certificados autofirmados en desarrollo:

# Disable TLS verification (NEVER in production)
MAILER_DSN=smtp://user:pass@host:587?verify_peer=0

Pruebas y monitoreo

Antes del lanzamiento

mail-tester.com: Envíe un correo de prueba a su dirección y obtenga una puntuación sobre 10 con problemas específicos. Apunte a 9+. Gratuito para 3 pruebas/día. Verifica SPF, DKIM, DMARC, listas de bloqueo, calidad HTML, cabeceras y enlaces.

MXToolbox: Diagnósticos DNS — registros MX, validez SPF y número de consultas, resolución DKIM, política DMARC, estado en listas de bloqueo.

Continuo

Google Postmaster Tools: Muestra la tasa de spam, reputación de IP, reputación de dominio y éxito de autenticación desde la perspectiva de Gmail. Gratuito, requiere verificación de dominio.

Cabeceras de correo: En Gmail, abra el correo → tres puntos → “Mostrar original.” Busque:

SPF: PASS with IP 1.2.3.4
DKIM: PASS (signature verified)
DMARC: PASS

Programación: revisión semanal de ps_mail en busca de fallos e informes DMARC. Pruebas mensuales en mail-tester.com y verificación de listas de bloqueo. Vuelva a verificar DNS después de cada cambio. Pruebe el correo después de cada actualización de PrestaShop.

Problemas comunes y soluciónes

“El correo de prueba funciona pero los clientes no reciben los pedidos”

  • Error de renderizado de plantilla: Un error de Smarty en la plantilla de pedido impide silenciosamente el envío. Revise var/logs/.
  • Plantilla faltante: La plantilla para el idioma del cliente no existe en mails/{lang_iso}/.
  • Tiempo de espera SMTP agotado: Las confirmaciones de pedidos grandes (muchos productos) agotan el tiempo en conexiónes SMTP lentas.
  • Dirección From rechazada: Servidores SMTP que requieren que la dirección From coincida con el usuario autenticado.

Limitación de velocidad

¿Está importando 200 pedidos o enviando una newsletter a 1.000 suscriptores? Su servidor SMTP acepta el primer lote y rechaza el resto. Espacie los envíos, verifique los límites del proveedor, o use un servicio transaccional que maneje las colas automáticamente.

Problemas de codificación (polaco/checo/caracteres especiales)

  • Línea de asunto ilegible: Asegúrese de que su instalación use UTF-8 en todo momento. Los asuntos se codifican en formato RFC 2047.
  • Contenido de plantilla roto: Los archivos de plantilla de correo deben ser UTF-8 sin BOM. El Bloc de notas de Windows puede guardar como ANSI — use VS Code.
  • Discrepancia en la base de datos: Las tablas deben usar utf8mb4. Verifique: SHOW CREATE TABLE ps_product_lang;

Correos bloqueados después de una migración

  • SPF no actualizado con la IP del nuevo servidor
  • Clave DKIM no coincidente — el nuevo host generó claves nuevas
  • La nueva IP no tiene reputación — caléntela gradualmente durante 2 semanas
  • Puerto 587 bloqueado en el nuevo host
  • Propagación DNS — espere 24-48 horas después de los cambios

El formulario de contacto no llega

Algunos módulos establecen el correo del cliente como dirección From. Esto falla en SPF porque su servidor no puede enviar desde customer@gmail.com. El From siempre debe ser el dominio de su tienda, con el cliente en Reply-To.

Lista de verificación de entregabilidad de correo

Paso 1: Base

  • ☐ Cambiar de PHP mail() a SMTP
  • ☐ Crear una dirección de envío dedicada (por ejemplo, orders@yourstore.com)
  • ☐ Enviar correo de prueba a Gmail y Outlook — ambos deben llegar a la bandeja de entrada

Paso 2: Autenticación DNS

  • ☐ Añadir registro SPF — verificar en MXToolbox, menos de 10 consultas
  • ☐ Habilitar DKIM y publicar la clave en DNS
  • ☐ Añadir registro DMARC con p=none e informes rua
  • ☐ Verificar cabeceras de correo — los tres deben mostrar PASS

Paso 3: Control de calidad

  • ☐ Puntuación de 9+ en mail-tester.com
  • ☐ IP no en listas de bloqueo
  • ☐ Las plantillas existen para todos los idiomas, tanto en HTML como en texto plano

Paso 4: Pruebas del mundo real

  • ☐ Realizar un pedido de prueba — el correo de confirmación llega a la bandeja de entrada en segundos
  • ☐ Procesar el pedido por cada estado — cada correo llega
  • ☐ Probar restablecimiento de contraseña, creación de cuenta, formulario de contacto

Paso 5: Monitoreo

  • ☐ Registrarse en Google Postmaster Tools
  • ☐ Configurar el procesamiento de informes DMARC
  • ☐ Actualizar DMARC a p=quarantine después de 2-4 semanas, luego p=reject
  • ☐ Programar verificaciónes mensuales de entregabilidad

Paso 6: Avanzado

  • ☐ Migrar a un servicio transaccional si se alcanzan los límites del hosting
  • ☐ Separar correo transaccional y de marketing en dominios diferentes
  • ☐ Configurar registro PTR si tiene VPS/servidor dedicado
  • ☐ Implementar manejo de rebotes

Cada capa — SMTP, SPF, DKIM, DMARC, plantillas limpias, IP con buena reputación — añade credibilidad. Si omite una, el sistema se debilita. Trabaje esta lista de verificación de forma metódica, pruebe después de cada cambio, y sus correos de PrestaShop llegarán a la bandeja de entrada. Para pasos de diagnóstico generales, consulte nuestra guía de solución de problemas.

More guides available

Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.

Cargando...
Volver arriba