jueves, 17 de mayo de 2012

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

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

¿Porque debemos de usar phpmailer?
Es posible enviar email con la función mail() de php, pero dicha funcion no permite algunas de las mas populares características que proporcionan los clientes de correo usados actualmente. Entre estas características se encuentran el envió  de email con ficheros adjuntos.
PHPMailer hace facil esta difícil tarea de enviar correos con estas características y puedes incluso utilizar tu propio servidos smtp aunque este 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.

Características principales:
*Capacidad de uso de uno o varios servidores SMTP externos.
*Uso de html en el envio
*Adjuntar imagenes y/o archivos en el email.
*Embeber imagenes dentro del correo electronico.
*Buena descripcion de errores.

Cuando enviamos un correo electrónico desde una aplicación en PHP podemos hacer uso de Template Power para generar el correo y de PHP Mailer para enviarlo. Vamos a verlo con un ejemplo:
correo.tpl:
1<p>Sr./Sra.: {nombre}:</p>
2<p>Cuerpo del correo.</p>
envio.php:
01<?php
02include 'class.phpmailer.php';
03include 'class.TemplatePower.inc.php';
04
05$tpl new TemplatePower('correo.tpl');
06$tpl->prepare();
07
08$tpl->assign('nombre'$nombre);
09//Creamos la instancia de la clase PHPMAiler
10$mail new phpmailer();
11
12//El método que usaremos es por SMTP
13$mail->Mailer = "smtp";
14
15// Los datos necesarios para enviar mediante SMTP
16$mail->Host = "smtp.nuestrohost.com";
17$mail->SMTPAuth = true;
18$mail->Username = "cuenta@nuestrohost.com";
19$mail->Password = "password";
20
21// Asignamos el From y el FromName para que el destinatario sepa quien
22// envía el correo
23$mail->From = "cuenta@nuestrohost.com";
24$mail->FromName = "Manuel Carrascosa de la Blanca";
25
26//Añadimos la dirección del destinatario
27$mail->AddAddress("direccion@hostdestino.com");
28
29//Asignamos el subject, el cuerpo del mensaje y el correo alternativo
30$mail->Subject = "Ejemplo de PHPMailer";
31$mail->Body = $tpl->getOutputContent();
32
33//Si al enviar el correo devuelve true es que todo ha ido bien.
34if($mail->Send())
35{
36    //Sacamos un mensaje de que todo ha ido correctamente.
37    echo "Mensaje enviado correctamente.";
38}
39else
40{
41    //Sacamos un mensaje con el error.
42    echo "Ocurrió un error al enviar el correo electrónico.";
43    echo "<br/><strong>Información:</strong><br/>".$mail->ErrorInfo;
44}
45?>
Podemos ver que básicamente lo que se hace es tener por un lado la plantilla. Luego con el método getOutputContent de la clase TemplatePower obtenemos el resultado de la plantilla y lo asignamos a la propiedad Body de nuestra instancia de la clase phpmailer. Luego simplemente enviamos el correo.

No hay comentarios:

Publicar un comentario