> Faqs > Error de configuración en el envío de email con PHP en la web, en local en Windows con Xampp

Error de configuración en el envío de email con PHP en la web, en local en Windows con Xampp

Trabajando con PHP en local, en mi ordenador Windows, con PHP instalado con Xampp, me da problemas el envío de email.

Esta es mi configuración en el PHP.INI para envío de un email a traves del un script en PHP.

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=localhost
; http://php.net/smtp-port
smtp_port=25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail().
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header=Off

; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log =
; Log mail to syslog (Event Log on Windows).
;mail.log = syslog

[ODBC]

Este es mi script PHP para envio de email:

$asunto = "Asunto del Mensaje: Envío Nombre y Contraseña";
$mensaje = "Estimado(a):\n
			$nombres $apellidos,n
			Ha sido registrado(a) en nuestros archivos\n
			como usuario: $usuario;\n
			con contraseña: $clave_usuario.\n
			\n
			Puede hacer el uso de cambio de \n
			contraseña al iniciar algún ingreso.\n
			\n 
			Atentamente\n 
			La Administración.";

$mensaje = wordwrap($mensaje, 70);
			
mail($correo, $asunto , $mensaje);

$msj_envio = "se ha enviado un mensaje a su correo electrónico $correo
			con su nombre de usuario y contraseña. Favor de revisar, su 
			bandeja de entrada o en su defecto en la de basura (trash).
			Gracias.";

echo $msj_envio;

Este es el mensaje de error al ejecutar el script.

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\san-ru\ventas-en-linea\acciones\forma-registro-guarda.php on line 41

se ha enviado un mensaje a su correo electrónico jsnchezruiz@gmail.com con su nombre de usuario y contraseña. Favor de revisar, su bandeja de entrada o en su defecto en la de basura (trash). Gracias.

¿Podrían decirme por favor dónde estoy cometiendo el error?

Respuestas

Con esa configuración de PHP estás asumiendo que en local tienes un servidor SMTP instalado que funciona en el puerto 25. Sin embargo, a no ser que hayas instalado ese supuesto servidor, y lo tengas verdaderamente arrancado en el puerto 25, no te funcionará. Por lo que el error que te arroja PHP es perfectamente normal.

La solución pasa por instalar un servidor SMTP en local, o hacer un servidor SMTP falso que capture estas solicitudes y te muestre el contenido de los correos que se enviarán. Luego, cuando esté publicada tu web en un servidor, ellos sí que suelen tener correctamente configurado PHP para que los correos salgan.

Te recomiendo leer este artículo para encontrar algunas soluciones para el envío de email en tu ordenador local en la etapa de desarrollo: SMTP server falso, alternativa para probar el envío de email

Miguel Angel
1826 85 116 5