Si tienes familiaridad con lo que buscas puedes entrar directamente en materia desde la configuración del archivo php.ini
En el vídeo a continuación se explica el proceso completo paso a paso:
Muchos de mis proyectos llegan al punto de enviar un correo y ahí toca tener imaginación porque no se explica como hacer el proceso.
El título del presente blog post, resume como hacer este proceso por medio de la función mail() pero sabemos que va más allá.
Los correos electrónicos son todo un universo de requerimientos y posibilidades y en cada apartado están llenos de lineamientos específicos.
Hay diferentes tipos de autenticación como IMAP, POP3, SMTP entre otros. Todos estos con sus respectivas especificaciones a nivel de puertos, servidores de dominio de entrada y salida, protocolos TLS o SSL de cifrado de correos entre muchas, muchas más opciones.
Pero bueno, no voy a dar más vueltas al proceso, porque todo se trata de hacerlo más sencillo y acá te voy a explicar como configurar XAMPP para poder enviar correos desde tu ordenador con una cuenta de Gmail.
Proceso de configuración de archivos dentro de la carpeta de instalación de XAMPP
Si en esta instancia, no entiendes bien de que va el proceso, te recomiendo que primero que averigües que es XAMPP. Lo descargues he instales en tu ordenador con todos los parámetros por defecto.
XAMPP lo puedes descargar según tu sistema operativo en el enlace a continuación:
https://www.apachefriends.org/es/download.html
Cabe insistir en que la instalación de XAMPP se debe hacer con todos los parámetros por defecto para que puedas encontrar los archivos según los referencio a lo largo de este tutorial.
Configuración del archivo php.ini
El archivo php.ini contiene la configuraciones más importantes de PHP a nivel general.
Su ubicación por defecto dentro de XAMPP es la siguiente:
C:\xampp\php\php.ini
En el documento de nombre php.ini se debe buscar la función de correo, de nombre mail function que está entre corchetes (o brackets según tu país) y debe aparecer de la siguiente forma.
[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 =
Estos parámetros se deben modificar del siguiente modo
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=smtp.gmail.com
; http://php.net/smtp-port
smtp_port=587
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = msevillab@gmail.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
En esta instancia, básicamente, se cambiaron los siguientes parámetros:
- Se ingresó el servidor SMTP para correos Gmail smtp.gmail.com
- Se puso el puerto 587 en el ítem smtp_port
Estos dos parámetros que acabo de indicar se modifican según la documentación pública oficial de gmail en el apartado de requisitos del servidor SMTP para realizar el proceso.
Se descomentó sendmail_from y se le puso la cuenta desde donde se va a enviar el correo.
Se descomentó el parámetro sendmail_path poniendo la ubicación del archivo ejecutable sendmail.exe dentro de XAMPP. Que sería la siguiente si se realizó la instalación de XAMPP con todas la opciones por defecto
"C:\xampp\sendmail\sendmail.exe -t"
El atributo -t es el que permite leer mensaje para los destinatarios, se debe poner en esta configuración tanto el backslash o también conocido como barra inclinada hacía la izquierda, como el atributo -t que acabo de mencionar.
Configuración del archivo sendmail.ini
Aunque pueda parecer redundante, la anterior configuración era de carácter global, en este apartado es donde se ponen las credenciales del correo electrónico con el que se va a trabajar.
Este archivo se encuentra en la siguiente ruta:
C:\xampp\sendmail\sendmail.ini
Se deben modificar los siguientes parámetros con los valores a continuación:
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=tucorreo
auth_password=tucontraseña
smtp_ssl=TLS
error_logfile=error.log
debug_logfile=debug.log
force_sender=tucorreootravez
Configuración de la función mail()
Ya en este punto, se puede enviar correos desde tu servidor local. Si habías activado los servicios Apache y MySQL previo a los cambios, desactívalos y vuélvelos a activar.
Cuando por fin logres enviar el correo, Gmail te notificará que hay un riesgo de suplantación o un script de carácter peligroso.
Debes estar seguro que esta notificación es tuya y le das autorizar. Ya en este punto puedes enviar los correos.
Archivo index.php de ejemplo para confirmar la configuración está funcionando.
El siguiente script lo tomé de la documentación oficial con una variante de un condicional para que muestre en pantalla si se envió el correo o no.
<?php
$para = 'aquí va el correo de a quien envías';
$asunto = 'El asunto del correo';
$descripcion = 'Este es el cuerpo del correo';
$de = 'From: tu correo configurado';
if (mail($para, $asunto, $descripcion, $de))
{
echo "Correo enviado satisfactoriamente";
}
?>
Configuración en el web service de Gmail
Gmail, cuando haya hecho el proceso completo y reiniciado los servicios de XAMPP, me alertará de inicio sospechoso, de aplicación poco segura.
Debo notificarle a Gmail que reconozco el acceso, en adición debo desactivar el acceso de aplicaciones poco seguras, confirmar activando un botón y por último acceder a una última validación donde le notifico a gmail que efectivamente fui yo quien hice los cambios sobre aplicaciones no seguras.
Al final del vídeo se muestra el paso a paso. Ya en este punto lo ideal es que esté funcionando la opción de enviar correos desde tu servidor local. próximamente haré más énfasis en el envío por formulario así como de correos html con plantillas avanzadas.
Cualquier duda me puedes dejar un mensaje o contactar.
Hola gracias por el tutorial detallado, esta configuracion me funcionaria igual con el aplicativo appserv?
que version de xampp has usado?, en la version xamp v3.2.4 no existen las siguientes opciones en el archivo sendmail.ini
auth_username=tucorreo
auth_password=tucontraseña
smtp_ssl=TLS
error_logfile=error.log
debug_logfile=debug.log
force_sender=tucorreootravez
Si man, esto aplica para versiones actuales de XAMPP!!
Gracias probé con varias configuraciones y definitivamente esta me funcionó
Excelente, me encanta que haya servido, saludos Domingo !!
sabes como se configura en apache appserv plis
Busca la carpeta sendmail el procedimiento es muy similar, aunque te recomiendo mejor xampp
Hola, en la opcion auth_password= debo poner mi contraseña de correo o creo una nueva?
Debes poner tu contraseña, sigue el paso a paso del video relacionado
Hola, en la opción auth_password= debo poner la contraseña de mi correo electrónico o crear una nueva?