martes, 5 de febrero de 2008

PHPMailer

Siempre es agradable recibir los emails maquetados y con alguna imagen que otra que le de gracia. Da una imagen profesional de nuestra web.
Otra característica interesante sería poder recibir adjuntos junto al email que enviemos desde la web.
Para ellos tenemos la instrucción mail en PHP para envío de correo 'solo texto' pero enviar correo maquetado con esta herramienta es una tarea dura y ardua. Por fortuna existe una herramienta llamada PHPMailer que nos facilita mucho la labor.

Vemos mediante un ejemplo su funcionamiento:

//Incorporamos la clase de envio de email.
include_once("phpmailer/class.phpmailer.php");

//Construimos un objeto de la clase PHPMailer
$mail = new PHPMailer();

//Indicamos al objeto donde se encuentran los ficheros del paquete PHPMailer
$mail->PluginDir = "phpmailer/";

//Instanciamos la propiedad Host con la dirección del servidor de envio de email, generalmente localhost.
$mail->Host = "localhost";

//En la propiedad From ponemos la dirección que se identifica como remitente
$mail->From = 'email del remitente';

//Indicamos el nombre con el que se identifica el remitente
$mail->FromName = 'Nombre del remitente';

//Frase descriptiva del email. En el subject siempre debe estar escrito una frase que resuma el contenido del email
$mail->Subject = "Asunto del email";

//Añadimos la direccion de envio
$mail->AddAddress("email de envio","Nombre del que recibe el email");

//Si queremos que alguien reciba una copia lo especificamos en este método
mail->AddCC("email de copia");

//Si quemos que alguien reciba una copia oculta lo especificamos en este método
$mail->AddBCC("email de copia oculta");

//Para adjuntar ficheros debemos utilizar el método AddAttachment
$mail->AddAttachment("Url de la imagen", "Nombre con el que aparecerá en los adjuntos");

//Si queremos utilizar imágenes dentro del email maquetado debemos utilizar este método
$mail->AddEmbeddedImage("Url de la imagen","Referencia de la imagen","Nombre de la imagen","base64","image/jpg");

Lógicamente "image/jpg" cambiará dependiente del tipo de imagen a enviar, si enviamos un gif debemos poner "image/gif".

//Construimos el email maquetado y lo metemos dentro de una variable
$body = '
<style type="text/css">
.Total
{
width:80%;
font-family: verdana;
}
</style>
<div class="Total">
<img src="cid:Referencia de la imagen"> /* Ver $mail->AddEmbeddedImage */
</div>';

//Cuerpo alternativo del email por si el lector del cliente no es capaz de componer páginas web
$alt_body = "Email alternativo\n\n";

//Ponemos el cuerpo del correo en la propiedad Body
$mail->Body = $body;

//Ponemos el cuerpo alternativo del correo en la propiedad AltBody
$mail->AltBody = $alt_body;

//Enviamos el correo, si se envia bien devuelve un 0 ( no hay error de envio ) en caso contrario devuelve otro valor.
$Error = $mail->Send();


Ver más en:
PHPMailer
http://blog.unijimpe.net/introduccion-a-phpmailer/

No hay comentarios: