Introducción a PHPMailer

PHPMailer es una clase escrita en PHP que facilita el envío de correo, añadiendo facilidad en el envío de correos con adjuntos, en formato HTML y con diferentes codificaciones, soporte para imagenes embebidas, headers personalizados y además funciona con múltiples servidores de correo.



Típicamente para el envío de correo con PHP se utiliza la función mail(), pero esta función tiene varias limitaciones, por ejemplo que no soporta el envío de adjuntos. Entonces PHPMailer nos viene a facilitar este trabajo que de otra forma seria muy engorroso. Viene con un conjunto de métodos que nos ayudarán en el envió de emails.

Empezando
El primer paso es descargar PHPMailer, aquí encontraremos dos archivos: class.phpmailer.php el cual contiene las funciones para el envío de correo y class.smtp.php para enviar correo mediante servidores SMTP.

Creamos un nuevo documento PHP en donde incluimos la clase y luego creamos una instancia de la clase para utilizarla mas adelante.
<?php
    
require("class.phpmailer.php");
    
$mail = new PHPMailer();
    
?>


Propiedades del Mensaje
El siguiente paso es asignar las propiedades del correo que vamos a enviar como el servidor de correo, subject y From. Luego con el método AddAddress asignamos a quien o quienes vamos a enviar el correo, también se puede utilizar AddCC y AddBCC para las copias y copias ocultas:

$mail->Host = "localhost";
    $mail->From = "[email protected]";
    $mail->FromName = "Nombre del Remitente";
    $mail->Subject = "Subject del correo";
    $mail->AddAddress("[email protected]","Nombre 01");
    $mail->AddAddress("[email protected]","Nombre 02");
    $mail->AddCC("[email protected]");
    $mail->AddBCC("[email protected]");


Cuerpo del Mensaje
Hasta aquí hemos utilizado las funciones básicas de correo, pero ahora viene la parte del cuerpo del mensaje. Podemos enviar correo en formato HTML e incluso definir un texto que se mostrará si es que el lector de correo no soporta HTML.

$body  = "Hola <strong>amigo</strong><br>";
    $body .= "probando <i>PHPMailer<i>.<br><br>";
    $body .= "<font color='red'>Saludos</font>";
    $mail->Body = $body;
    $mail->AltBody = "Hola amigo\nprobando PHPMailer\n\nSaludos";


Agregar Archivos Adjuntos
Ahora si deseamos añadir un archivo adjunto a nuestro mensaje utilizamos el método AddAttachment el cual recibe dos parámetros, el primero es la ruta del archivo que vamos a incluir y el segundo es el nombre que se va a mostrar en el correo para este archivo.

$mail->AddAttachment("images/foto.jpg", "foto.jpg");
    $mail->AddAttachment("files/demo.zip", "demo.zip");

Finalizando

Finalmente el envío del correo se hace con la función send(). Entonces uniendo todas las partes de nuestro código tenemos:

 
  require("class.phpmailer.php");
    $mail = new PHPMailer();
    $mail->Host = "localhost";
     
    $mail->From = "[email protected]";
    $mail->FromName = "Nombre del Remitente";
    $mail->Subject = "Subject del correo";
    $mail->AddAddress("[email protected]","Nombre 01");
    $mail->AddAddress("[email protected]","Nombre 02");
    $mail->AddCC("[email protected]");
    $mail->AddBCC("[email protected]");
     
    $body  = "Hola <strong>amigo</strong><br>";
    $body .= "probando <i>PHPMailer<i>.<br><br>";
    $body .= "<font color='red'>Saludos</font>";
    $mail->Body = $body;
    $mail->AltBody = "Hola amigo\nprobando PHPMailer\n\nSaludos";
    $mail->AddAttachment("images/foto.jpg", "foto.jpg");
    $mail->AddAttachment("files/demo.zip", "demo.zip");
    $mail->Send();


Si probamos este mensaje obtendremos el siguiente resultado en nuestra cuenta de correo en el cual notamos el mensaje en HTML y los archivos adjuntos.

Desde luego que hemos utilizado solo las funciones básicas, hay muchas más opciones con las cuales se puede personalizar completamente el mensaje que enviamos, puedes encontrar un referencia de estas opciones en: http://phpmailer.sourceforge.net/docs/. Finalmente les dejo los archivos de este ejemplo funcionando para que lo prueben.