Enviar Correos Electronicos desde PHP

Probablemente quieras agregarle a tu proyecto PHP la capacidad de enviar correos electronicos de forma segura y teniendo el control del mismo. En este articulo te enseñare el proceso de envios de correos desde PHP a traves del uso SMTP para autenticacion y la libreria PHPMailer.

El envio de emails a traves de SMTP desde el lenguaje PHP es una grandiosa opcion para una entrega confiable y segura para el destinatario. Crearemos la estructura de la logica para poder enviar correos mediante el uso de la libreria PHPMailer, si no la conoces a continuacion hablaremos sobre ella.

libreria PHPMailer para enviar correos electronicos
Índice
  1. ¿Que es PHPMailer?
    1. Beneficios de PHPMailer
  2. Datos de Sevidores de correo SMTP
  3. Habilitar SMTP de Gmail para enviar correos con PHPMailer
  4. Implementacion de PHPMailer para enviar correos
    1. Explicacion del Codigo para enviar correos desde php

¿Que es PHPMailer?

PHPMailer, es una libreria para enviar correos electronicos desde php a traves de la autenticcion en SMTP.Ademas nos permite tener control sobre el proceso de envio, el formato del correo electronico que se envie.

Beneficios de PHPMailer

Los beneficios de utilizar la libreria para enviar correos electronicos desde php en base a mi experiencia, son los siguientes:

  • Seguridad Avanzada: utiliza autenticacion SMTP.
  • Facilidad de uso: su estructura es facil de entender
  • Compatibilidad: funciona con diversos servidores SMTP como gmail.
  • Control de Errores: Identifica de forma rapida los errores.
  • Personalizacion Absoluta: se puede configurar la estructura del correo a traves de php
  • Sistema Robusto: Eficiente para enviar bastantes correos electronicos.

Datos de Sevidores de correo SMTP

Actualmente existen muchos servidores SMTP debido a la gran cantidad de empresas que brindan gmails. A continuacion te doy una lista con los datos de servidores smtp configurar el envio de correos mediante PHPMailer.

PROVEEDORDIRECCIONPUERTO TLS Y SSL
GMAILsmtp.gmail.com"587" Y "465"
HOSTINGERsmtp.hostinger.com"587" Y "465"
GoDaddysmtpout.secureserver.net"587" Y "465"
Lista de Servidores SMTP con sus datos

Habilitar SMTP de Gmail para enviar correos con PHPMailer

Para poder utilizar un correo Gmail para enviar correos electronicos desde nuestro proyecto en php deberas seguir los siguientes pasos.

  • Ingresar al Administrador de cuentas de Google
  • Activar la "Verificacion en 2 pasos" en la seccion "Seguridad"
  • Crear una "contraseña de aplicaciones" dentro de la seccion "Verificacion en 2 pasos"
  • Copiar la contraseña de aplicacion generada.
contraseña de aplicacion creada para usar smtp gmail
contraseña de aplicacion creada para usar smtp gmail

Implementacion de PHPMailer para enviar correos

Para implementar phpmailer para enviar correos desde php necesitaremos descargar la libreria desde su pagina de GitHub o mediante un terminal de tu IDE de confianza.

Para este caso utilizare Visual Studio Code, abrire la carpeta del proyecto y el terminal del mismo.

Abrir Terminal en Visual Studio Code
Pasos para abrir un terminal en Visual Studio Code

Ejecuta la siguiente linea de comando en el terimnal para que la libreria PHPMailer se instale en tu proyecto.

composer require phpmailer/phpmailer

Luego de tener la libreria instalada se nos crearan 2 archivos y una carpeta, tal y como aparece a continuacion.

Librebria de PHPMailer Instalada

Crearemos un archivo .php donde escribiremos la logica para enviar correos, para este ejemplo le llamare "enviarcorreo.php".

Codigo para Enviar Correos electronicos con PHPMailer

Modifica el codigo segun la plataforma donde se encuentre registrado el correo que enviara los correos electronicos.

<?php
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$mail = new PHPMailer(true);
$replyToEmail = 'ejemplo@tudominio.com';
$replyToName = 'nombre';
try {
    $mail->isSMTP();
    $mail->Host = 'SMTP';
    $mail->Port = 465;
    $mail->SMTPSecure = 'ssl';
    $mail->SMTPAuth = true;
    $mail->Username = 'ejemplo@tudominio.com';
    $mail->Password = 'contraseña';
    $mail->setFrom('ejemplo@tudominio.com', 'Nombre');
    $mail->addReplyTo($replyToEmail, $replyToName);
    $mail->addAddress('correo-remitente@gmail.com','nombre');
    $mail->isHTML(true);
    $mail->Subject = 'ASUNTO DEL CORREO';
    $mail->CharSet = 'UTF-8';
    $mail->Body = 'MENSAJE DEL CORREO';

    if ($mail->send()) {
        // Puedes añadir acciones o mensajes de éxito aquí si lo necesitas
    }
} catch (Exception $e) {
    echo 'Error al enviar el mensaje: ' . $mail->ErrorInfo;
}
?>

Explicacion del Codigo para enviar correos desde php

Explicare de forma breve los codigos que necesitaras modificar para tener una autenticacion existosa a la hora de enviar correos con PHPMailer.

Deberas ingresar el correo electronico que emitira los correos electronicos a otros, para este ejemplo usare el smtp de gmail.

$replyToEmail = 'ejemplo@tudominio.com';

Le dare un nombre al emisor del correo electronico para este ejemplo.

$replyToName = 'DUEÑO DEL CORREO';

En HOST ira la direccion del servidor SMTP que desees Utilizar. Ejemplo si deseo utilizar el servidor smtp de gmail.

$mail->Host = 'smtp.gmail.com';

Existen diferentes puertos, pero esto dependera del tipo de seguridad que el servidor tenga.

$mail->Port = 465;

Existen 2 tipos de seguridad "ssl" y "tls", segun esto el puerto cambiara o como lo establecen los servidores smtp.

$mail->SMTPSecure = 'ssl';

Deberas ingresar el correo electronico que emitira los correos electronicos a otros, utilice el smtp de gmail asi que el correo debe ser de esta plataforma.

$mail->Username = 'correodepruebaphpmailer0@gmail.com';

Ingresaremos la contraseña que google nos da al activar el envio smtp para acceder a nuestra cuenta de gmail. (Arriba esta la guia de como obtener la contraseña)

$mail->Password = 'contraseñagenerada';

Ingresaras el correo electronico exacto del que enviara el correo y el nombre que desees darle.

$mail->setFrom('correodepruebaphpmailer0@gmail.com', 'DUEÑO DEL CORREO');

Ingresaremos el correo de la persona que recibira el corrreo electronico y el nombre que desees darle.

$mail->addAddress('MarcoLopez221103@gmail.com','Cliente Prueba')

Se escribe el Asunto del correo que se le mostrara al recepcionista.

$mail->Subject = 'CORREO DE PRUEBA';

Se escribe el contenido o mensaje en especifico del correo.

$mail->Body = 'ESTE ES EL MENSAJE DEL CORREO DE PRUEBA';
CODIGO COMPLETO DEL EJEMPLO

Aqui les dejo el codigo Funcional con los datos correctos, se utilizo como ejemplo funcional para este post.


<?php
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$mail = new PHPMailer(true);
$replyToEmail = 'correodepruebaphpmailer0@gmail.com';
$replyToName = 'DUEÑO DEL CORREO';
try {
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 465;
    $mail->SMTPSecure = 'ssl';
    $mail->SMTPAuth = true;
    $mail->Username = 'correodepruebaphpmailer0@gmail.com';
    $mail->Password = 'myqugwehytgqmsuo';
    $mail->setFrom('correodepruebaphpmailer0@gmail.com', 'DUEÑO DEL CORREO');
    $mail->addReplyTo($replyToEmail, $replyToName);
    $mail->addAddress('MarcoLopez221103@gmail.com','Cliente Prueba');
    $mail->isHTML(true);
    $mail->Subject = 'CORREO DE PRUEBA';
    $mail->CharSet = 'UTF-8';
    $mail->Body = 'ESTE ES EL MENSAJE DEL CORREO DE PRUEBA';

    if ($mail->send()) {
        // Puedes añadir acciones o mensajes de éxito aquí si lo necesitas
    }
} catch (Exception $e) {
    echo 'Error al enviar el mensaje: ' . $mail->ErrorInfo;
}
?>

Tambien te puede interesar: Comandos de Busqueda en Google

Finalmente podemos ejecutar nuestro archivo php y automaticamente se enviara el correo electronico al correo que nosotros hemos indicado anteriormente.

Prueba de envio de correo con PHPMAILER smtp gmail
Prueba de envio de correo con PHPMAILER

Haz llegado al final de este articulo, proyecto completo en GitHub espero les sea de gran ayuda.

Deja una respuesta

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

Subir