Informática y Software Práctico

XAMPP configurar correo local sendmail: por qué no envía

Post actualizado el día octubre 29, 2026 by DeiviSanzPlay

Cuando intentas XAMPP configurar correo local sendmail en Windows y la función mail() de PHP devuelve false sin dejar rastro, el problema casi nunca está en tu código. Está en que XAMPP para Windows no trae un servidor SMTP funcional: trae un binario llamado sendmail.exe que en realidad actúa como cliente, y la configuración por defecto apunta a un relay que no existe en tu máquina. Esa es la raíz de la duda que te trajo hasta aquí.

La confusión es habitual porque en Linux el comando sendmail sí es un MTA real. En XAMPP Windows, no. Es un wrapper de fake sendmail pensado para reenviar a un servidor externo (Gmail, Mailtrap, tu hosting). Si no lo alimentas con credenciales y un host válido, PHP intenta lanzarlo, falla silenciosamente y tu script sigue como si nada.

Qué hace realmente el sendmail de XAMPP

El archivo sendmail.ini, ubicado en C:xamppsendmail, es la pieza clave. Ahí defines smtp_server, smtp_port, auth_username y auth_password. Sin tocar eso, cualquier intento de enviar correo desde localhost muere en el primer intento.

El flujo completo es: PHP llama a mail() → lee php.ini → busca sendmail_path → ejecuta sendmail.exe → este lee sendmail.ini → se conecta al SMTP configurado. Si cualquiera de esos eslabones falla, no hay error visible en el navegador.

Un caso real: un desarrollador probando un formulario de contacto en un proyecto Laravel con XAMPP reportó que el correo «se enviaba» pero nunca llegaba. Resultó que sendmail.ini tenía smtp_server=mail.midominio.com heredado de un tutorial antiguo. Cambiarlo a smtp.gmail.com con puerto 587 y una contraseña de aplicación resolvió el problema en cinco minutos.

Los dos archivos que tienes que editar sí o sí

Para XAMPP configurar correo local sendmail de forma que funcione, necesitas tocar dos archivos y reiniciar Apache. No hay atajo:

1. php.ini (en C:xamppphpphp.ini): busca la sección [mail function] y ajusta:

SMTP=smtp.gmail.com smtp_port=587 sendmail_from = tu_correo@gmail.com sendmail_path = «C:xamppsendmailsendmail.exe -t»

La línea sendmail_path es la que muchos olvidan. Sin ella, PHP en Windows no sabe a quién llamar.

2. sendmail.ini (en C:xamppsendmailsendmail.ini):

smtp_server=smtp.gmail.com smtp_port=587 smtp_ssl=tls auth_username=tu_correo@gmail.com auth_password=tu_contraseña_de_aplicacion force_sender=tu_correo@gmail.com

Ojo con Gmail: desde hace años exige contraseñas de aplicación (con verificación en dos pasos activa) y no acepta tu contraseña normal. Si usas tu clave habitual, el servidor rechazará la autenticación con un error 535 que no verás en el navegador, solo en los logs de sendmail.

Esto no funciona para todo el mundo

Hay escenarios donde esta configuración no te sirve. Si tu proveedor de internet bloquea el puerto 25 saliente (habitual en conexiones domésticas), cualquier intento de relay directo fallará. También si intentas enviar a direcciones externas desde un relay corporativo que solo permite dominios internos.

Y un detalle que casi nadie menciona: el fake sendmail de XAMPP no encola mensajes. Si el servidor SMTP está caído, el correo se pierde. Para desarrollo real, herramientas como MailHog o Mailpit son más fiables porque capturan todo localmente sin depender de credenciales externas.

Comprobar que la configuración funciona

Después de reiniciar Apache desde el panel de XAMPP, crea un archivo test.php en htdocs con un mail() básico. Si el navegador muestra «enviado» pero no llega nada, revisa C:xamppsendmaildebug.log (activa debug_logfile en el ini). Ahí aparece el error real: autenticación fallida, timeout, TLS rechazado.

Mi recomendación práctica: usa Mailtrap o Mailpit para desarrollo y reserva la configuración de sendmail con credenciales reales solo cuando necesites probar el envío end-to-end. XAMPP configurar correo local sendmail funciona, pero es frágil y depende de un tercero que cambia sus políticas sin avisar.


Sobre el autor: DeiviSanzPlay — Soy David Sanz, Editor y Responsable de Contenidos. Mi trabajo consiste en revisar, corregir y mejorar los contenidos de este blog para que la información sea clara, útil y esté bien estructurada. Trabajo con diferentes temáticas y verticales, por lo que una parte importante de mi día a día es analizar cada contenido, cuidar la redacción y asegurar que el lector encuentre información de calidad. Me gusta prestar atención a los detalles. Desde una corrección de estilo hasta la organización de un artículo, todo cuenta cuando se trata de crear contenidos que realmente aporten valor y sean fáciles de entender. En este blog encontrarás artículos sobre diferentes temas y sectores. Mi responsabilidad es cuidar y supervisar cada contenido para que mantenga unos estándares de calidad y ofrezca una buena experiencia a quien nos visita. Porque para mí, un buen contenido no consiste únicamente en escribir. También hay que revisar, contrastar, ordenar y pensar en la persona que está al otro lado de la pantalla.

Perfiles verificables: Sitio web

Publicado el 29 de October de 2026. Última revisión: 29 de October de 2026.