2009-02-08 28 views
5

¿Cómo se incrusta una imagen en HTML para que la imagen se entregue con el contenido del archivo html y no necesite un viaje por separado al servidor para recuperar la imagen? Necesitamos esto para incorporar el logotipo de la empresa en las firmas antes de que abandonen el servidor de correo. No queremos utilizar una solución del lado del cliente como Thunderbird o la funcionalidad de Outlook para agregar firmas.¿Cómo incrustar imágenes en el correo electrónico HTML en el servidor de correo?

gracias

+0

¿ha sido capaz de utilizar con éxito la solución que acepta en un correo electrónico? –

+0

Hola Sam, todavía tengo que intentarlo. Tengo un cliente que quiere que se agreguen firmas a los correos electrónicos en el lado del servidor. Como nadie realmente hace esto bien, supongo que debe ser muy difícil de hacer. Te haré saber. – mxc

Respuesta

8

Lo que hay que hacer es codificar el archivo en Base64, e incluirlo como esto:

<img src="data:image/gif;base64,R0lGODlhUAA..(the rest of your base64 encoded file).."> 

http://www.sweeting.org/mark/blog/2005/07/12/base64-encoded-images-embedded-in-html

http://dean.edwards.name/weblog/2005/06/base64-ie/

+0

urls de datos no funcionan en IE. –

+1

¿Funciona esto para los correos electrónicos? –

+0

los enlaces explican cómo hacer que funcione en IE. la mayoría de los programas de correo electrónico en estos días utilizan el mismo motor de representación que uno de los navegadores, o de hecho están en el navegador, por lo que debería funcionar para la mayoría de las personas. – nickf

0

No se puede hacer, pero eso está bien porque los navegadores modernos usan una característica KeepAlive para que la conexión con el servidor se mantiene para la carga de imágenes.

+1

Nota: El OP pregunta sobre el formato de correo electrónico HTML, no las páginas web. – Eddie

5

No creo que las especificaciones HTML de W3C realmente te permitan hacer esto.

Pero si realmente lo desea, puede crear una tabla con un ancho de píxel por píxel y establecer los colores de fondo de la celda uno por uno para crear su imagen.

+1

y REALMENTE desea recibir correos electrónicos como este?:) – kender

+4

++! quiero lo mismo que estás fumando;) – miceuz

+8

Oh, vamos, no puedes decir que no estaba siendo creativo. :) –

0

Aquí hay un práctico Image to HTML converter - advertencia crea HTML repugnante! :)

+1

ha del autor: "es grande, hinchado y lento. ¿De qué sirve? En su forma pura, ninguno. Al menos ninguno que se me ocurra. " –

0

La pregunta que viene a la mente es - ¿por qué no desea que una normal de<img> etiqueta en su html?

Adjuntar una imagen al cuerpo de html puede parecer tentador, pero definitivamente ralentizará los tiempos de descarga de correo electrónico, y algunas personas usan cosas como la conexión de gprs, por lo que quieren limitar su ancho de banda.

IMO que tiene imágenes dentro de su html es pure evil. Pero eso es solo por curiosidad, para preguntar por qué quieres una solución así: parece que @nickf alredy te dio una buena :)

+0

La descarga de correo electrónico suele ser una tarea en segundo plano y normalmente solo se notifica a los usuarios una vez que se descarga el correo. Creo que es mejor incrustar imágenes que descargarlas cuando se abre el correo. ¿Como qué? A menudo, los enlaces a imágenes están bloqueados por firewalls o no están disponibles en modo fuera de línea. – mxc

+0

Entonces, la solución de @ Kobi parece perfecta: envíe imágenes como archivos adjuntos y enlace a archivos adjuntos en el cuerpo del correo electrónico. De esta forma, aún permite que los usuarios obtengan el cuerpo ligero, solo – kender

+0

I, como usuario de dicho cliente de correo electrónico, preferiría tener una configuración en la que pudiera indicarle al programa que precapturara o no, dependiendo de mi confianza en el remitente (o filtro de spam o lo que sea) Lo más importante, para mí, sería la radio de "no images anytime" ... Es mi computadora, no la del remitente. – lexu

8

La solución estándar para eso es agregar la imagen como archivo adjunto. Cada archivo adjunto tiene un ContentID, por lo que puede incrustar la imagen usando: <img src="cid:ContentID" />.
Esto incrustará la imagen en el correo electrónico, no en el html.

+0

gracias lo intentarán. Los correos electrónicos son principalmente lo que estoy viendo – mxc

0

He reevaluado las soluciones recientemente.

De acuerdo con this blog se ha mejorado la compatibilidad con los archivos adjuntos en línea, se envió material nuevo al repositorio principal de Rails.

No he verificado qué versión de Rails tiene la suerte de contener este cambio.

Para mis implementaciones 2.3.x utilicé el inline_attachment gem.

Cuestiones relacionadas