Evitar el bloqueo de imágenes en Outlook
23 de March, 2009. Escrito por [Q]boss en PHP + MySQL, Recursos
Imagino que habrás recibido infinidad de spam, o no spam sino correos de promociones a las que efectivamente te has suscrito (bueno, cof cof, de esto seguro que menos...). Es probable, aunque no seguro, que en estos correos se haya bloqueado las imágenes por motivos de seguridad, pero tengo casi la certeza de que alguna vez te habrá llegado alguno en los que las imágenes aparecen ante ti sin haber dado tu consentimiento, sobre todo si empleas como gestor de correo Outlook.
La técnica que voy a explicar no la recomiendo como solución óptima ya que personalmente no veo el bloqueo de imágenes como algo negativo, aunque puede ser muy interesante frente a algunos clientes que o bien tienen muy claro que su target es el Outlook o derivados, o bien NO tienen una visión muy amplia o clara de la cantidad de sistemas de gestión de correo que se manejan hoy en día.
Se trata de incrustar imágenes en el propio correo, y de esta manera poder mostrarlas sin que sean bloqueadas por el gestor de correo.
La técnica
Para lograrlo nos vamos a basar en la clase phpMailer, que si aun no ha caido en tus garras, después de este post no me creeré que no la descargues y la pruebes. 100% recomendable oiga. Concretamente a esta parte.
La idea como decíamos es incrustar las imágenes como adjuntas y referirnos por tanto a ellas con una ruta un poco peculiar. De esta manera no se entiende que la imagen es externa a al correo, y no es bloqueada por el Outlook. La manera de lograrlo con phpMailer es empleando una combinación del método AddEmbeddedImage(rutaimagen, cid, nombre); y posteriormente de una referencia a la imagen en su SRC tal que así:
-
<img src="cid:mi_foto" />
Ejemplo práctico:
-
<?php
-
-
require("class.phpmailer.php");
-
-
$mail = new PHPMailer();
-
$mail->IsSMTP();
-
$mail->Host = "smtp.example.com"; // SMTP server
-
-
$mail->From = "from@example.com";
-
$mail->AddAddress("myfriend@example.net");
-
$mail->AddEmbeddedImage('img/mifoto.jpg', 'mifoto', 'mifoto.jpg');
-
-
$mail->Subject = "First PHPMailer Message";
-
$mail->Body = "Hola Mundo. \n <img src='cid:mifoto' />";
-
$mail->WordWrap = 50;
-
-
if(!$mail->Send())
-
{
-
echo 'Message was not sent.';
-
}
-
else
-
{
-
echo 'Message has been sent.';
-
}
-
?>
En este ejemplo hemos supuesto que mifoto.jpg está en una carpeta img a la misma altura que este fichero, para que la ruta sea correcta y pueda incrustarla en el mail.
Lo negativo: muchos gestores de correo lo siguen bloqueando como por ejemplo gmail, y lo que es peor, otro no solamente lo bloquean sino que no reconocen bien el formato y no lo muestran correctamente ni una vez desbloqueado (por ejemplo thunderbird).
Pero ahí queda esa posibilidad para quien la quiera, que seguro que puede hacerte quedar bien delante de algun cliente exigente.
Comments
2 Responses to “Evitar el bloqueo de imágenes en Outlook”
Leave a Reply
hola
Tengo problemas con la visualizacion de imagenes en el cuerpo de un mensaje en las direcciones de gmail (en los demss no hay problema). La imagen se visualiza con un link a la imagen en el servidor. Estoy usando phpmailer para ello.
Hay alguna forma de evitar que gmai lo bloquee??
Muchas gracias y saludos
Creo recordar que Gmail siempre te sacaba las imágenes como link.
Como digo en el post, esta técnica vale si vas a por Outlook convencional, pero para combinaciones que sean más compatibles en general, el bloqueo de imágenes no es malo, sobre todo si se diseña el boletin pensando en que existe, y dándole al usuario el interés para que las desbloquee.