Cómo enviar correos con PHPMailer

Alfredo
Sígueme!
Últimas entradas de Alfredo (ver todo)

¿Qué es PHPMailer?

phpmailer

Es una librería que está desarrollada en PHP que nos va a facilitar el envío de correos electrónicos. Se basa en el componente Active Server ASPMail.

PHPMailer permite realizar trabajos complejos, como adjuntar ficheros o realizar envíos de mails con formato HTML.Y de manera más segura, se envían los correos electrónicos mediante el protocolo SMTP.

Además, proporciona una lista de características avanzadas:

  • Autenticación SMTP
  • Cifrado seguro / MIME
  • Soporte de protocolos TLS y SSL
  • Contenido HTML junto con texto sin formato
  • Múltiples archivos fs, string y binarios
  • Soporte de  imágenes incrustadas

¿Por qué no utilizar mail()?

La mayoría de servidores web tienen deshabilitado esta función por seguridad. Esto es debido a que abusan de esta función de PHP para el envío de correo basura el (spam).

¿Cómo instalo PHPMailer?

Para poder instalar la librería a nuestra página web, deberemos descargarlo desde el repositorio de Git.

En el repositorio podemos ver documentación, ejemplos de cómo enviar emails con PHPMailer. Los ficheros que nos interesan, son los que se ubican en la carpeta “src”:

  • Exception.php
  • OAuth.php
  • PHPMailer.php
  • POP3.php
  • SMTP.php

Estructura inicial

$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
// Si no existen errores...seguimos por aquí
} catch (Exception $e) {
echo "ERROR: No se ha podido enviar el correo.({$mail->ErrorInfo})";
}

Configuración SMTP

En la función de SMTPDebug hay 3 estados:

  • 0: Entorno de Producción. No mostrará mensajes de debug.
  • 1: Muestra por pantalla el diálogo del cliente con el servidor SMTP.
  • 2: Muestra por pantalla el diálogo del cliente con el servidor SMTP y viceversa.
  • 3: Muestra códigos de estado de cada fase de la conexión, y añade la función 2.
  • 4: Muestra a bajo nivel las trazas del diálogo entre cliente y servidor SMTP.
$mail->isSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Host = '(SERVIDOR)';
$mail->Username   = '(USUARIO)';  
$mail->Password = '(CONTRASEÑA)';
$mail->Port = 587;

Configurar remitentes y destinatarios

$mail->setFrom('alfredo@lacodigoteca.com', 'Lacodigoteca.com');
$mail->addAddress('alfredo@lacodigoteca.com', 'Lacodigoteca.com');
$mail->addAddress('ellen@example.com');
$mail->addReplyTo('alfredo@lacodigoteca.com', 'Alfredo Martín');
$mail->addBCC('otroemail@gmail.com');

Cuerpo del correo electrónico

$mail->isHTML(true);
$mail->CharSet = "utf-8";
$mail->Subject = '[La codigoteca] - ticket XXXXX';
$mail->Body = '
Hola <b>Alfredo</b>
Te enviamos el ticket de la compra que has realizado con nosotros.<br>
Un saludo,<br>
<a href="https://lacodigoteca.com">Lacodigoteca.com</a>';
$mail->AltBody = 'Hola Alfredo. Te enviamos el ticket de la compra que has realizado con nosotros. Un saludo,Lacodigoteca.com';

Adjuntar documentos al correo electrónico

$mail->addAttachment($doc);

Proceso del envío del correo electrónico

$mail->send();

Documento final

(Opcional) Correo electrónico de pruebas

yopmail

(Opcional) Servidor de pruebas SMTP

Para probar la funcionalidad del correo PHP, utilizaremos Mailtrap , un servidor SMTP falso, para no inundar nuestras bandejas de entrada o, lo que es peor, las bandejas de entrada de nuestros clientes. Una vez que se asegure de que todo funciona correctamente y sus mensajes de correo electrónico se vean bien, podrá sustituir fácilmente la configuración de SMTP en nuestros ejemplos con la de su servidor real.

Si todavía no está utilizando Mailtrap, cree una cuenta gratuita , vaya a su Bandeja de entrada y copie los siguientes valores de la pestaña de configuración SMTP a su script PHPMailer:

Servidor

$mail-> Host = 'smtp.mailtrap.io';

Usuario

$mail-> Username = '1a2b3c4d5e6f7g'; //(ejemplo, generado por Mailtrap)

Contraseña

$mail-> Password = '1a2b3c4d5e6f7g'; // (ejemplo, generado por Mailtrap)

Puerto

$mail->Port = 25; // o 465,2525

Hay un punto más por mencionar sobre SMTP: POP-before-SMTP para autenticación. Este método se reemplaza casi por completo por la autenticación SMTP, pero aún se puede usar a veces. Su principal ventaja es la transparencia para el usuario que envía un correo electrónico. Consulte esta página de Github para obtener el ejemplo del uso de POP-before-SMTP con PHPMailer. 

Tip: Si quieres ver cómo mandar por email un ticket de compra en PDF generado por PHP.

Alfredo

Desarrollador web de profesión (.NET, jQuery, JavaScript y SQL Server). Amante del fútbol y los videojuegos. Escribo en este blog sobre temas de programación que me parecen interesantes y que quiero compartir con todo el mundo.

También te podría gustar...

Deja una respuesta

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

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
A %d blogueros les gusta esto: