Enviar correos desde PHP con SMTP y cuenta de Google

Recientemente me ha tocado pegarme en un proyecto personal con la necesidad de enviar correos electrónicos automatizados en una aplicación web que estaba implementando en PHP.

Mis requisitos eran: Enviar correos desde PHP, autenticados con SMTP y una cuenta de Google. En este artículo te explico cómo hacerlo en 2023. Tras los últimos cambios de políticas introducidos por Google en verano de 2022.

Generar una contraseña de aplicación en tu cuenta de Google

Lo primero que vamos a necesitar es habilitar nuestra cuenta de Google para poder enviar correos desde una aplicación de terceros.

Como adelantaba antes, en verano de 2022 Google introdujo una serie de cambios en sus políticas. Si bien antes podías desactivar la seguridad de tu cuenta para enviar correos de una manera sencilla, obviamente no era una opción válida.

Para conseguir esta contraseña, a mayo de 2023, tenemos que tener habilitada la Verificación en dos pasos. Para ello, nos dirigimos a nuestra cuenta, vamos al apartado de Seguridad y clicamos la opción de Verificación en dos pasos que tendremos que tener, por cierto, activado. Ahora bajamos a la parte baja del panel y veremos el espacio de Contraseñas de aplicaciones.

Accedemos a este apartado y le damos a generar una nueva contraseña. Ésta será la que introduciremos en la autenticación SMTP de PHPMailer.

Cómo enviar emails desde PHP sin que los rechace Google

Doy por hecho que el lector de este artículo está familiarizado con composer para manejar las dependencias de nuestro proyecto. Vamos a instalar la librería de PHPMailer.

Instalamos en nuestro proyecto el paquete de PHPMailer de la siguiente manera:

composer require phpmailer/phpmailer

A continuación, en el código de nuestro proyecto, importamos las librerías de PHPMailer.

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

Finalmente, construimos el código que enviará nuestro correo. Os dejo un código de ejemplo funcional:

        $mail = new PHPMailer(true);
        //Server settings
        $mail->SMTPDebug=0;                                         // Pon en 1 para ver debug de si se ha enviado o no el correo
        $mail->isSMTP();                                            // Enviar con SMTP
        $mail->Host       = 'smtp.gmail.com';                       // Servidor SMTP
        $mail->SMTPAuth   = true;                                   // Habilitar SMTP authentication
        $mail->Username   = '[email protected]';                     // SMTP usuario
        $mail->Password   = 'CONTRASEÑA_APLICACIÓN';                     // SMTP password
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
        $mail->Port       = 587;                                    // TCP port to connect to
        $mail->CharSet = 'UTF-8';

        //Recipients
        $mail->setFrom('[email protected]', 'Nombre Ejemplo');
        $mail->addAddress($to);     // Añadir destinatario

        // Contenido
        $mail->isHTML(true);                                  	// Enviar en HTML
        $mail->Subject = "MI ASUNTO PERSONALIZADO";
        $mail->Body    = "EL CONTENIDO DE MI CORREO UTILIZANDO PHPMAILER";

        $mail->send();

Y eso sería todo. A priori con esto no deberíais tener ningún problema para enviar correos desde vuestra cuenta de Google.

Ibai

Apasionado por la tecnología, el software, las interfaces de usuario (UX UI) y los sistemas. Utilizo este canal de comunicación para transmitir de manera informal, y muchas veces "rápido", pequeñas aportaciones a la comunidad software.

Deja una respuesta

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


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

*

Artículos relacionados