2011-07-06 33 views
6

Guardo los correos electrónicos y sus archivos adjuntos en una base de datos. Estoy usando un WebBrowser WPF y el método NavigateToString para mostrar el cuerpo html de correos electrónicos. Funciona, pero cuando los correos electrónicos usan imágenes incrustadas con un identificador de contenido (cid), no puedo mostrarlos. Guardé todas las imágenes incrustadas como archivos adjuntos cuando guardo correos electrónicos en la base de datos. Podría crear y almacenar imágenes en archivos temporales del usuario actual y reemplazar las referencias de cid con una ruta absoluta en el disco del usuario, pero creo que no es la mejor manera ...¿Cómo mostrar el correo electrónico html con imágenes incrustadas (cid)?

¿Tiene algunas ideas?

Respuesta

16

fin he encontrado una buena manera:

que sustituyen las referencias cid de todas las imágenes con datos de imagen base 64 (RFC 2557) como este:

<img src="data:image/png;base64,RAAAtuhhx4dbgYKAAA7...more data....." alt="test"> 

se puede utilizar el siguiente código para generar el cadena de base 64:

string base64Str = Convert.ToBase64String(File.ReadAllBytes(@"C:\Temp\test.png")); 

Observaciones: no funciona con IE6

+1

Gracias por publicar sus ans ¡nosotros somos! –

+2

Encantador y elegante. PD F * ck IE 6. –

+0

Muy elegante, pero cuidado: [Los navegadores tienen límites de tamaño en las URL de datos] (http://stackoverflow.com/q/695151/87698). – Heinzi

Cuestiones relacionadas