Evitar el bloqueo de imágenes en Outlook

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í:

Ejemplo práctico:

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 ";
$mail->WordWrap = 50;

if(!$mail->Send())
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
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.