2009-10-05 18 views
5

Tengo una aplicación que envía un correo electrónico con formato HTML con imágenes incrustadas. El correo electrónico se ve perfecto en muchos clientes diferentes de escritorio/web. Cuando el correo electrónico se ve en un teléfono móvil compatible con correo electrónico HTML (probado en iPhone, WinMo 6.1), las imágenes se muestran como 'X' rojas. Todos los demás HTML se muestran correctamente. Para que quede claro, el problema SÓLO ocurre en clientes móviles y no en clientes de escritorio.Imágenes incrustadas en el correo electrónico HTML que no se muestra en teléfonos móviles

El código para incrustar imágenes está funcionando perfectamente y no creo que haya ningún problema con él, pero he incluido algunos ejemplos de código rápida a continuación por si acaso:

MailMessage mail = new MailMessage(); 
      mail.To.Add("[email protected]"); 
      mail.From = new MailAddress("[email protected] myemail.com"); 
      mail.Subject = "Image sample - fails in mobile clients"; 
      string Body = "Sample email text<img src=\"cid:imageId\" />"; 

      AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Body, null, "text/html"); 
      LinkedResource lr = new LinkedResource("myImage.jpg"); 
      lr.ContentId = "imageId"; 
      htmlView.LinkedResources.Add(lr); 

      mail.AlternateViews.Add(htmlView); 
      SmtpClient smtpClient = new SmtpClient(); 
      smtpClient.Send(mail); 

¿Alguien sabe por qué embebido las imágenes no se muestran en los clientes móviles? Mejor aún, ¿cómo puedo hacer que las imágenes se muestren correctamente?

Editar: Si Outlook 2007 (y superior) envía un correo electrónico con imágenes, entonces las imágenes se muestran correctamente en un cliente móvil y cliente de escritorio. Si se envía un correo electrónico con formato HTML con imágenes incrustadas, las imágenes no se muestran correctamente en el cliente móvil, pero se muestran correctamente en un cliente de escritorio.

¿Cómo Outlook puede enviar correos electrónicos con imágenes con confianza, pero si se envía a través de una aplicación web (utilizando imágenes incrustadas) el cliente móvil bloquea las imágenes. ¿Cuál es la diferencia entre los dos?

+0

realmente difícil de decir sin ver el correo electrónico generado. El código parece sano. –

+0

Es fácil de imaginar: las imágenes incrustadas se bloquean como si estuvieran bloqueadas para su descarga, pero las imágenes están incorporadas y no necesitan ser descargadas. Para que quede claro, las imágenes incrustadas se muestran perfectamente en Outlook. Solo en los clientes móviles donde las imágenes incrustadas no se muestran correctamente. –

Respuesta

3

I finalmente encontró una respuesta a este problema: no se configuró el ContentType opcional de LinkedResource. Los clientes de escritorio pueden averiguar

De MSDN:

La información de la clase ContentType se utiliza para describir los datos contenidos en un mensaje de correo electrónico en tales de manera que el software que muestra correo -mail puede presentar el contenido de una manera apropiada .ContentType es utilizado con la clase de archivo adjunto a especifica el tipo de contenido en el archivo adjunto .

Outlook fue capaz de entender cómo se iba a mostrar la imagen adjunta, pero los clientes móviles necesitaban más información.

0

En la mayoría de los casos, la causa es que la configuración del teléfono inteligente está configurada para evitar la descarga de imágenes de correo electrónico de forma predeterminada. En la mayoría de los teléfonos, el comportamiento predeterminado es que tienen que descargar las imágenes manualmente, generalmente mediante un botón o configuración en el cliente de correo electrónico, si quieren ver las imágenes adjuntas a ese correo electrónico en particular. Es la misma configuración que uso en la configuración de Outlook de mi computadora de escritorio y portátil. Para la mayoría de los clientes de correo electrónico, es una cuestión de protección contra correo no deseado. Para los teléfonos, también es para ahorrar ancho de banda debido al uso innecesario. Nunca debe contar con que los clientes siempre vean las imágenes de manera predeterminada.

+0

No, ese no es el caso para imágenes incrustadas. Las imágenes llegan al cliente con las imágenes ya adjuntas. Los usuarios no serán solicitados por sus clientes para descargar las imágenes. Ese es uno de los beneficios de la incrustación. Todo funciona de maravilla y de la forma en que lo desearía y la protección contra correo no deseado no entra en juego. –

2

Esto es lo que dijeron otros usuarios, un problema de preferencias y un error conocido.

Alison, ¿está seguro de que los archivos binarios de la imagen se dirigieron al teléfono? Como otros usuarios indicaron, el problema de las preferencias podría ser una opción predeterminada para reducir la descarga inadvertida de imágenes voluminosas a clientes móviles con planes de datos limitados.

En cuanto al problema conocido, vea

http://www.google.com/support/forum/p/Google+Mobile/thread?tid=6470e77d94f0315c&hl=en

Gracias y buena suerte ...

EDIT: Whoa ... esto es una cuestión oldie;)

0

buena respuesta here:

string attachmentPath = Environment.CurrentDirectory + @"\test.png"; 
Attachment inline = new Attachment(attachmentPath); 
inline.ContentDisposition.Inline = true; 
inline.ContentDisposition.DispositionType = DispositionTypeNames.Inline; 
inline.ContentId = contentID; 
inline.ContentType.MediaType = "image/png"; 
inline.ContentType.Name = Path.GetFileName(attachmentPath); 

message.Attachments.Add(inline); 

acabo probado y funcionó como un encanto. querrá determinar su tipo de archivo de curso. aquí es una lista de tipos de medios:

http://www.fileformat.info/info/mimetype/image/index.htm

Cuestiones relacionadas