Como configurar su correo con PHPMailer

La gran mayoría de personas que programan en PHP, utilizan la función mail para realizar envíos, ya sean simples o complejos. El problema está cuando intentan realizar envíos masivos con esta función. Esta es mucho más simple por su compatibilidad y facilidad de uso con MySQL, pero no esta preparada para grandes cantidades de envíos.
Por suerte, existen clases como PHPMailer, que nos permiten realizar estos mismos envíos por el puerto y smtp que queramos, creando una aplicación mucho más potente y con la posibilidad de tener un mejor control de los envíos al existir reportes de correo. PHPMailer es una clase de PHP gratuita.

Algunas de las funciones que trae son:

  • Soporta 8bits, base64 y binarios
  • Autenticación por SMTP
  • Envíos con HTML
  • Envíos de emails con adjuntos
  • Inclusión de imágenes en el correo

Generalmente encontraras la libreria de PHPMailer instalada en todos nuestros servidores. También puedes descargarla aquí

Una vez que tenemos la clase en nuestro sitio, debemos iniciar la misma desde PHP, usando la función require y cargando la clase de PHP:

require("class.phpmailer.php");
$mail = new PHPMailer();

//Luego tenemos que iniciar la validación por SMTP:
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ""; // SMTP a utilizar. Por ej. mail.tudominio.com
$mail->Username = "; // Correo completo a utilizar
$mail->Password = ""; // Contraseña
$mail->Port = 25; // Puerto a utilizar

//Con estas pocas líneas iniciamos una conexión con el SMTP. Lo que ahora deberíamos hacer, es configurar el mensaje a enviar, el //From, etc.
$mail->From = "info@tudominio.com"; // Desde donde enviamos (Para mostrar)
$mail->FromName = "Nombre";

//Estas dos líneas, cumplirían la función de encabezado (En mail usado de esta forma: “From: Nombre ”) de //correo.
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos
$mail->IsHTML(true); // El correo se envía como HTML
$mail->Subject = “Titulo”; // Este es el titulo del correo.
$body = “Hola mundo. Esta es la primer línea”;
$body .= “Aquí continua el mensaje”;
$mail->Body = $body; // Mensaje a enviar
$exito = $mail->Send(); // Envía el correo.

//También podríamos agregar simples verificaciones para saber si se envió:

if($exito){
echo ‘El correo fue enviado correctamente.’;
}else{
echo ‘Hubo un error. Contacta con el administrador.’;
}

Adjuntos

Este script funciona perfectamente, pero está claro que no todos los clientes de correo o Webmails soportan HTML, por lo que podríamos querer mostrar un texto alternativo plano. Esto lo podemos hacer agregando la siguiente línea:

$mail->AltBody = "Hola mundo. Esta es la primer línea\n Aquí continua el mensaje”;

PHPMailer tiene cantidades de funciones, entre ellas la posibilidad de enviar adjuntos. Los mismos se pueden agregar de la siguiente forma:

$mail->AddAttachment("imagenes/imagenadjunta.jpg", "nombre_a_mostrar.jpg");

El primer valor es el que se utiliza para elegir la ruta del archivo. El segundo, es para marcar el nombre del archivo a mostrar.

CC y BBC

También tenemos la posibilidad de agregar cuentas en copia oculta para cuando tenemos muchos remitentes con las siguientes líneas:

$mail->AddCC("cuenta@dominio.com");
$mail->AddBCC("cuenta@dominio.com");

Sistema completo

IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ""; // SMTP a utilizar. Por ej. mail.tudominio.com
$mail->Username = ""; // Correo completo a utilizar
$mail->Password = ""; // Contraseña
$mail->Port = 25; // Puerto a utilizar
$mail->From = "info@tudominio.com"; // Desde donde enviamos (Para mostrar)
$mail->FromName = "TUDOMINIO.COM";
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos
$mail->AddCC("cuenta@dominio.com"); // Copia
$mail->AddBCC("cuenta@dominio.com"); // Copia oculta
$mail->IsHTML(true); // El correo se envía como HTML
$mail->Subject = “Asunto”; // Este es el asunto del email.
$body = “Hola mundo. Esta es la primer línea
”; $body .= “Aquí continua el mensaje”; $mail->Body = $body; // Mensaje a enviar $mail->AltBody = "Hola mundo. Esta es la primer línea\n Aquí continua el mensaje”; // Texto sin html $mail->AddAttachment("imagenes/imagen.jpg", "imagen.jpg"); $exito = $mail->Send(); // Envía el correo. if($exito){ echo ‘El correo fue enviado correctamente.’; }else{ echo ‘Hubo un error. Contacta con el administrador.’; } ?>

Artículos relacionados