PHPMailer

RECU-0278 (Recurso Ficha Técnica)

Descripción

PHPMailer es una clase desarrollada en PHP que trata de facilitar la funcionalidades asociadas a los envíos y manejos de emails. Se basa en el componente active server ASPMail. PHPMailer permite hacer de manera sencilla trabajos complejos, como adjuntar ficheros o realizar envíos de mails con formato HTML. Es muy recomendable realizar los envíos a través del protocolo SMTP.

Ejemplos de uso

Existen dos clases fundamentales para el manejo de emails con PHPMailer:

  • class.phpmailer.php el cual contiene las funciones para el envío de correo.
  • class.smtp.php para enviar correo mediante servidores SMTP.

En primer lugar es necesario indicar el uso de la clase, creando una con el constructor de PHPMailer que se utilizará más adelante.

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

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 quién, o quiénes, se va a enviar el correo. También se puede utilizar AddCC y AddBCC para las copias y copias ocultas:

$mail->Host = "localhost";
$mail->From = "remite@email.com";
$mail->FromName = "Nombre del Remitente";
$mail->Subject = "Subject del correo";
$mail->AddAddress("destino1@correo.com","Nombre 01");
$mail->AddAddress("destino2@correo.com","Nombre 02");
$mail->AddCC("usuariocopia@correo.com");
$mail->AddBCC("usuariocopiaoculta@correo.com");

Hasta aquí hemos utilizado las funciones básicas de correo, pero ahora viene la parte del cuerpo del mensaje. Se puede 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";

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");

Finalmente, el envío del correo se hace con la función send(). Uniendo todas las partes del código ejemplo tenemos:

require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->Host = "localhost";
 
$mail->From = "remite@email.com";
$mail->FromName = "Nombre del Remitente";
$mail->Subject = "Subject del correo";
$mail->AddAddress("destino1@correo.com","Nombre 01");
$mail->AddAddress("destino2@correo.com","Nombre 02");
$mail->AddCC("usuariocopia@correo.com");
$mail->AddBCC("usuariocopiaoculta@correo.com");
 
$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();

Ventajas e inconvenientes

PHPMailer es una librería escrita en php para enviar emails basada en el componente active server ASPMail. Permite de una forma sencilla tareas complejas como por ejemplo:

  • Enviar mensajes de correo con ficheros adjuntos (attachments).
  • Enviar mensajes de correo en formato HTML.
  • Con PHPMailer se pueden enviar emails via sendmail, PHP mail(), o con SMTP. Lo más recomendable es usando smtp por dos razones:

Mediante el uso de esta librería se pueden usar varios servidores SMTP. De esta manera, es posible repartir la carga de trabajo, reduciendo los tiempos de espera en el envío de mensajes. Además, se implementan las funcionalidades necesarias para añadir a varios destinatarios, las direcciones privadas, y las opciones de respuesta.

Es posible enviar un email con la función mail() de php, pero dicha función no permite algunas de las características más populares que proporcionan los clientes de correo usados actualmente. Entre estas características se encuentran el envío de email con ficheros adjuntos.

PHPMailer, hace esta tarea muy sencilla e incluso puede utilizar su propio servidor de SMTP aunque éste requiera autenticación (un nombre de usuario y contraseña), con lo que se podrá usar una cuenta gratuita de correo obtenida por ejemplo en hotpop.

Requisitos e incompatibilidades

Necesitamos el fichero class.phpmailer.php que es la clase PHPMailer propiamente dicha y también el fichero class.smtp.php que nos permite el envío de emails a través de un servidor smtp.

Enlaces externos

Contenidos relacionados

Pautas
Área: Desarrollo » Librerías y Módulos » PHP
Código Título Tipo Carácter
LIBP-0350 Librerías para aplicaciones PHP Libro de pautas Directriz Recomendada