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.
Indice de Contenido
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.
¿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.
PROVEEDOR | DIRECCION | PUERTO TLS Y SSL |
GMAIL | smtp.gmail.com | «587» Y «465» |
HOSTINGER | smtp.hostinger.com | «587» Y «465» |
GoDaddy | smtpout.secureserver.net | «587» Y «465» |
Tambien te puede interesar: Importancia de una Computadora portatil para programadores
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.
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.
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.
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.
Haz llegado al final de este articulo, proyecto completo en GitHub espero les sea de gran ayuda.