Simulación de Envío de Correos Locales con Sendmail
Aprende a configurar el envío de emails con la función mail() de PHP en XAMPP mediante sendmail.ini y descubre herramientas modernas de captura SMTP local como Mailpit.
El Problema de Enviar Correos en Localhost
En servidores Linux reales existe un servicio de correo del sistema (como Postfix o Exim). Sin embargo, en Windows, si ejecutas la función nativa mail() de PHP sin configurar nada, recibirás de inmediato este error:
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini
Para solucionar esto, XAMPP incluye una utilidad preinstalada llamada Sendmail ubicada en C:\xampp\sendmail\.
Paso 1: Vincular PHP con Sendmail en `php.ini`
Abre C:\xampp\php\php.ini y localiza la sección [mail function]. Asegúrate de configurar las siguientes directivas:
[mail function]
; En Windows comentalas para usar sendmail externo:
;SMTP = localhost
;smtp_port = 25
; Descomenta y apunta al binario de sendmail de XAMPP:
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
Paso 2: Configurar `C:\xampp\sendmail\sendmail.ini`
Abre C:\xampp\sendmail\sendmail.ini. Aquí defines a través de qué servidor SMTP real o ficticio saldrán los correos de prueba:
[sendmail]
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_ssl = tls
error_logfile = error.log
debug_logfile = debug.log
auth_username = [email protected]
auth_password = tu_contraseña_de_aplicacion_google
force_sender = [email protected]
La Alternativa Moderna Recomendada: Mailpit / MailHog
Capturador Local SMTP (Sin Riesgo de Enviar Correos Reales)
En lugar de usar credenciales reales de Gmail (que pueden bloquear tu cuenta por spam durante pruebas), los desarrolladores profesionales usan herramientas gratuitas como Mailpit o Papercut SMTP. Estas herramientas levantan un servidor SMTP local en el puerto 1025 que captura todos los correos salientes y te permite verlos en una bandeja web en el navegador (ej. http://localhost:8025). ¡Ningún correo sale a internet y pruebas enlaces y HTML con total seguridad!
⚡ Script de Prueba con mail() y Cabeceras HTML en PHP
Guarda este script en htdocs para comprobar si la función mail() despacha correctamente:
<?php
// Configuración del correo de prueba
$destinatario = "[email protected]";
$asunto = "Prueba de correo desde XAMPP Localhost";
$mensaje = "
<html>
<head>
<title>Prueba de Correo</title>
</head>
<body style='font-family: Arial, sans-serif; color: #333;'>
<h2 style='color: #fb7a24;'>¡Correo Enviado Exitosamente desde XAMPP!</h2>
<p>Si estás leyendo este mensaje, tu motor Sendmail o Mailpit está capturando las peticiones de <code>mail()</code> correctamente.</p>
<hr>
<small>Fecha de envío: " . date('Y-m-d H:i:s') . "</small>
</body>
</html>
";
// Cabeceras obligatorias para correo con formato HTML UTF-8
$cabeceras = "MIME-Version: 1.0\r\n";
$cabeceras .= "Content-type: text/html; charset=UTF-8\r\n";
$cabeceras .= "From: Kilopolis Academia <[email protected]>\r\n";
$cabeceras .= "X-Mailer: PHP/" . phpversion();
// Intentar envío
if (mail($destinatario, $asunto, $mensaje, $cabeceras)) {
echo "<p style='color: green;'><strong>✔ Éxito:</strong> El correo fue aceptado por el agente de transferencia de correo (MTA).</p>";
} else {
echo "<p style='color: red;'><strong>✖ Error:</strong> PHP no pudo despachar el mensaje. Revisa sendmail.ini y los registros de error.</p>";
}
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Por qué en entornos de desarrollo local es más seguro y recomendable usar un capturador SMTP como Mailpit o MailHog en lugar de un servidor SMTP real como Gmail?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual de XAMPP: Instalación & Pruebas y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.