¿Te ha pasado alguna vez recibir correos electrónicos con imágenes que tienes que cargar aparte porque no están adjuntadas correctamente al mensaje? A mí sí, y tengo que decir que no me gusta nada. Por supuesto, existe el compromiso de que el tamaño del correo aumentará si las imágenes se adjuntan, pero si el remitente se asegura de que el número y el tamaño de las imágenes son pequeños, el tamaño del correo aún debería ser aceptable.
Estaba buscando una solución para esto en Magento y descubrí que aún no había una extensión que ofreciera esta funcionalidad. Como quería tener esto para nuestro sitio Magentron.com, decidí implementarla como una nueva extensión llamada EmailImages y publicarla a través de Magento Connect: EmailImages.
La extensión es bastante directa: si hay URLs de imágenes en el cuerpo HTML del correo, las descarga, las cachea (usando la caché de Magento con su propio tipo de caché para que puedas vaciarla fácilmente) y las adjunta al correo, cambiando el tipo de contenido del correo a multipart/related. Las opciones de configuración en Sistema -> Configuración -> Avanzado -> Sistema -> Email Images te permiten:
- habilitar/deshabilitar la funcionalidad
- definir el tiempo máximo para cachear las imágenes descargadas (en segundos)
- proporcionar una expresión regular distinta
- proporcionar un índice de expresión regular distinto a usar
La extensión sobrescribe los modelos de Newsletters y Emails (concretamente: core/email, core/template, newsletter/template). Lamentablemente probablemente haya muchas otras extensiones que reescriben estos mismos modelos (por ejemplo la imprescindible ASchroder_SMTPPro), así que prueba esta extensión en un entorno que no sea de producción antes de instalarla en un servidor "vivo". Ten en cuenta que esto se debe a la forma en que Magento está estructurado. Si alguien tiene una solución mejor, nos interesa de verdad oírla, ¡así que cuéntanoslo si es tu caso!
Como creemos que la calidad del software es muy importante, incluso para un proyecto open source, nos hemos tomado la molestia de escribir pruebas PHPUnit usando Ecomdev_PHPUnit. Hemos alcanzado el 100% de cobertura de código y, aunque eso no diga mucho por sí solo, al menos todas las líneas de código se han ejecutado en las pruebas unitarias. Gracias a esto ya hemos evitado que algunos problemas estén presentes en la versión publicada.
Esperamos que disfrutes de nuestra extensión, y si tienes algún comentario o sugerencia nos encantaría escucharlo, así que tómate la molestia de contactarnos vía los comentarios o la página de contacto.