Como enviar correos gmail desde PHP con la función mail() en localhost con XAMPP

Como enviar correos gmail desde PHP con la función mail en localhost con XAMPP

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *