Mediante la librería phpmailer seremos capaces de enviar correos embebiendo imágenes y código HTML en el propio correo electrónico, de tal manera que enviaremos correos con plantillas.
Es lógico pensar que esta manera de enviar correos será más costosa, puesto que el mail será de un tamaño considerable al embeber las imágenes en lugar de adjuntarlas o alojarlas en un servidor público. Ese incremento de tamaño es debido a que la imagen se envía como si fuera texto codificado en Base-64 en la cabecera del correo.
La función incluida en PHPMailer que nos ayudará a embeber imágenes es AddEmbeddedImage y recibe los siguientes parámetros:
• @param string $path ruta al archivo.
• @param string $cid ID del attachment. Se usa para identificarlo dentro del HTML del mail.
• @param string $name Sobreescribe el nombre del attachment.
• @param string $encoding Codificación del archivo
• @param string $type tipo de archivo (MIME) type.
El código para enviar un mail embebido sería:
function envia_mail_embebido(){
// incluye la clase phpmailer.php
require_once “class.phpmailer.php”;
// crear una nueva instancia
$mail = new PHPMailer();
// dirección de correo desde la que se envía el mail
$mail->From = “seas@seas.es”;
//Nombre que aparecerá al recibir el correo
$mail->FromName = “Administrador”;
//Asunto del mensaje
$mail->Subject = “Asunto del mensaje”;
// a traves de este host (tome el host smtp que aparece en el archive php.ini)
$mail->Host = “smtp.seas.es”;
//con este puerto, desde php.ini si es que existe (de lo contrario se usa por defecto el 25)
$mail->Port = 25;
// Identificación en SMTP
$mail->SMTPAuth = true;
$mail->Username = “usuario”;
$mail->Password = “clave”;
//Direccines destino
$mail->Sender=”mail@seas.com”;
$mail->AddReplyTo(“respuesta@seas.com”, “Responde a este mail”);
$mail->AddAddress(“otromail@seas.com”);
$mail->AddBCC(‘copiaoculta@seas.es’);
//Edición del contenido del mail.
$mail->IsHTML(true);
// adjunta files/imagen.jpg
$mail->AddEmbeddedImage(‘files/imagen.jpg’,’imagen’,’file/imagen.jpg’,’base64′,’image/jpeg’);
$mail->Body = file_get_contents(‘plantilla_html.html’);
// una vez construído todo el mensaje es momento de enviarlo.
if($mail->Send()){
echo “Envio adecuado”;
}else{
echo “Error enviando: ” . $mail->ErrorInfo;;
}
} //Fin de la function.
La plantilla HTML a la que se hace referencia podría ser similar a la siguiente:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
<title>Título</title>
</head>
<body>
<center>
<table width=”450″ border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″>
<tr>
<td>
<img src=”cid:imagen.jpg” alt=”mail image” width=”450″ height=”901″ border=”0″ boder=”0″ /></td>
</tr>
</table>
</center>
</body>
</html>
Post publicado por: Germán Romeo
SEAS es el centro de formación online del Grupo San Valero, especializado en el ámbito técnico, industrial y de empresa. Visita www.seas.es para consultar nuestra oferta formativa de cursos y másteres. Formación profesional para el empleo de calidad y accesible para todos.
John Vanegas
19 junio, 2015 at 5:20 pmHola! todo ha salido muy bien! en verdad te agradezco!! llevaba horas buscando…
wil
9 diciembre, 2015 at 10:00 pmFunciona bien pero tuve un error ,src=”cid:imagen.jpg” me funciono sin la extencion si le colocaba la extencion no me salia la imagen Gracias