Informática

Envío de mails con imágenes embebidas

22 marzo, 2012

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

  • Reply
    John Vanegas
    19 junio, 2015 at 5:20 pm

    Hola! todo ha salido muy bien! en verdad te agradezco!! llevaba horas buscando…

  • Reply
    wil
    9 diciembre, 2015 at 10:00 pm

    Funciona 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

Deja un comentario

Información básica acerca de cómo protegemos tus datos conforme al Reglamento General de Protección de Datos
(Reglamento UE 2016/679)

De conformidad con lo establecido en el Reglamento General de Protección de Datos, te informamos de:
- Quien es el responsable del tratamiento: SEAS, Estudios Superiores Abiertos S.A.U. C/Violeta Parra nº 9 50015
Zaragoza (España).
- Cuál es el fin del tratamiento: Gestión y control de los comentarios del blog de SEAS.
- En que basamos la legitimación: En tu consentimiento.
- La comunicación de los datos: No se comunicarán tus datos a terceros.
- Los criterios de conservación de los datos: Se conservarán mientras exista interés mutuo para mantener el fin del
tratamiento o por obligación legal. Cuando dejen de ser necesarios, procederemos a su destrucción.
- Los derechos que te asisten:
(i) Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al tratamiento
(ii) derecho a retirar el consentimiento en cualquier momento y (iii) derecho a presentar una reclamación ante
la autoridad de control (AEPD).
- Los datos de contacto para ejercer tus derechos: SEAS, Estudios Superiores Abiertos S.A.U. C/ Violeta Parra nº 9 –
50015 Zaragoza (España) o través de correo electrónico a lopd@estudiosabiertos.com
- También puedes ponerte en contacto con nuestro Delegado de Protección de Datos en dpd@estudiosabiertos.com

 

Información adicional: Puedes consultar la información adicional y detallada sobre nuestra política de privacidad