2012-03-04 11 views
6

Estaba jugando con OpenPop, una biblioteca escrita en C# para buscar correo POP3. Parece que funciona bien, pero no entendí bien cómo diferenciar entre los archivos adjuntos explícitamente al correo y cosas como las imágenes en los correos con contenido HTML. Esta biblioteca los trata a todos como "archivos adjuntos". Para mis necesidades, no consideraría una imagen dentro del correo HTML como un archivo adjunto.
A partir de los documentos de la biblioteca:cómo distinguir el adjunto de correo "real" de las imágenes en el correo html?

Un MessagePart es considerado como un archivo adjunto, si
- no es la celebración de texto y no es un mensaje de varias partes o
- que tiene una cabecera Content-Disposition que dice que es un archivo adjunto

¿Qué debo hacer o buscar, al menos en términos teóricos (porque no estoy muy familiarizado con los protocolos de correo)?

Respuesta

4

Puede verificar si el archivo de imagen está referenciado en el texto del cuerpo del correo electrónico. Debería analizar el HTML y buscar etiquetas como img o la propiedad background-image en un selector de CSS. Si el mensaje no usa la imagen, entonces considere que es un archivo adjunto "genuino".

3

Soy un desarrollador en OpenPop.NET.

Esta es solo información básica acerca de que los correos electrónicos contienen archivos adjuntos. La respuesta de Tony the Pony es el camino a seguir.

También tuve el problema de distinguir los archivos adjuntos de los no adjuntos cuando estaba implementando esa parte de OpenPop.NET. MIME has a header, Content-Disposition que es capaz de decir si una determinada parte es un archivo adjunto o no.

Por ejemplo, aquí es un archivo adjunto

Content-Disposition: attachment 

y aquí podría ser una imagen a una parte del HTML del correo electrónico

Content-Disposition: inline 

Qué bueno que pueda parecer, el problema es que muchos de correo electrónico los clientes no agregan estos encabezados, lo que dificulta a los lectores como OpenPop.NET. Elegimos no examinar todas las partes HTML de un correo electrónico para ver a qué imágenes se está haciendo referencia y, por lo tanto, ahora depende del usuario de la biblioteca.

Si desarrolla una buena solución al problema, podría agregarse como un ejemplo para el proyecto.

+0

De hecho no es muy a menudo cuando el contenido-disposición está vacía en el correo electrónico. 'Content-Disposition: attachment' sucede. Muchos clientes de correo electrónico lo están usando. Pero en línea, incluso si es una especificación, todavía falta. – Marcin

+0

@foens Sí, mientras leía más documentos de openpop.net y leía más sobre MIME, me di cuenta de que esto puede ser un poco complicado. Gracias por la aclaración de todos modos, y si se me ocurre algo utilizable, les dejaré saber, creo que tengo algunas ideas. – Less

3

lo he hecho de esta manera y parece que funciona:

foreach (OpenPop.Mime.MessagePart fileItem in elencoAtt) 
{ 
    System.Net.Mime.ContentDisposition cDisp = fileItem.ContentDisposition; 

    //Check for the attachment... 
    if (!cDisp.Inline) 
    { 
     // Attachment not in-line 
    } 
    else 
    { 
     // Attachment in-line 
    } 
} 
Cuestiones relacionadas