Envio de email con PHP, PHPMailer

PHPMailer es una excelente librería desarrollada en PHP que expande y facilita el envio de mails con este lenguaje. Permite el envio de archivos adjuntos, soporta múltiples codificaciones, acepta imágenes embebidas, entre otras funcionalidades.

Para comenzar a utilizarla debemos descargarla desde la Web Oficial, en la sección de descargas veremos las diferentes versiones disponibles.

Une vez que lo tengamos entre varios archivos (demos, tutoriales, etc) deberemos elegir entre class.phpmailer.php para el envío de correo y class.smtp.php para enviar correo mediante servidores SMTP. Incluimos el archivo que corresponda en un nuevo documento e instanciamos la clase:

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

Con esto ya estamos listo para usar las diferentes funcionalidades, como por ejemplo setear el remitente, destinatarios, copias y asunto del mensaje:

$mail->From = "remitente@email.com";
$mail->FromName = "Nombre del Remitente";
$mail->Subject = "Asunto 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");

Como mencionamos más arriba podemos enviar el mensaje como HTML, y además podemos enviar un texto alternativo para el caso que el cliente de correo del destinatario no soporte este formato:

$body  = "Hola  estoy probando PHPMailer.< br />";
$body .= "Este es el cuerpo del mensaje.< br />";
$body .= "Saludos";
$mail->Body = $body;
$mail->AltBody = "Hola estoy probando PHPMailer\n\nSaludos"; // texto alternativo

Yendo un poco más a fondo podriamos agregar un Archivo Adjunto, por lo que debemos valernos del método AddAttachment() y enviarle 2 parámetros, el primero la ruta al archivo a adjuntar y el segundo el nombre con el que se mostrará al destinatario:

$mail->AddAttachment("_img/imagen.jpg", "foto.jpg");
$mail->AddAttachment("_content/zipeado.zip", "demo.zip");

Con esto tenemos todo listo, seteamos el remitente, destinatario y asunto. Creamos el cuerpo en HTML con un texto alternativo en caso de que el cliente de correo no lo soporte. Y adjuntamos 2 archivos, una imágen y un .zip. Sólo restaría enviar el mail y esto se hace con el método send(). Nuestro código completo quedaría así:

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

$mail->From = "remitente@email.com";
$mail->FromName = "Nombre del Remitente";
$mail->Subject = "Asunto 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  estoy probando PHPMailer.< br />";
$body .= "Este es el cuerpo del mensaje.< br />";
$body .= "Saludos";
$mail->Body = $body;
$mail->AltBody = "Hola estoy probando PHPMailer\n\nSaludos"; // texto alternativo

$mail->AddAttachment("_img/imagen.jpg", "foto.jpg");
$mail->AddAttachment("_content/zipeado.zip", "demo.zip");

$mail->Send();

Saludos y que lo disfruten!

Bookmark and Share

1 comentarios:

Pepelukas dijo...

Buenas, al ejecutar el código para probarlo en un archivo llamado send.php me aparece el siguiente error "Deprecated: Function split() is deprecated"
que puedo tener mal en ña función split?,gracias por todo.

Publicar un comentario