2009-11-03 10 views
20

¿Hay una clase o un conjunto de funciones integradas en .NET Framework (3.5+) para analizar los correos electrónicos sin formato (documentos MIME)?¿Hay métodos .NET Framework para analizar un correo electrónico (MIME)?

No estoy buscando nada sofisticado o una biblioteca separada, necesita ser incorporada. Voy a usar esto en algunas pruebas unitarias y solo necesito tomar los encabezados principales de interés (A, De, Asunto) junto con el cuerpo (que en este caso siempre será texto y, por lo tanto, no habrá árboles o límites MIME). He escrito varios analizadores MIME en el pasado y si no hay nada disponible, simplemente voy a armar algo de expresiones regulares. Sería genial poder hacer algo como:

MailMessage msg = MailMessage.Parse(text); 

¿Pensamientos?

+0

Microsoft tiene CDO, se explica aquí: http://stackoverflow.com/questions/936422/recommendations-on-parsing-e ml-files-in-c-sharp (sé que esto es viejo, simplemente publique esto para las personas que lo encuentren más tarde como yo) – eselk

Respuesta

21

sé que dijiste no hay bibliotecas externas, pero tengo una biblioteca publicado en CodePlex:

https://bitbucket.org/otac0n/mailutilities

MimeMessage msg = new MimeMessage(/* string, stream, or Byte[] */); 

Se ha probado con más de 40.000 mensajes de correo electrónico en el mundo real.

No estoy muy contento con mi elección del espacio de nombres, pero ... soy demasiado flojo para cambiarlo.


PS:

Internamente, mi biblioteca utiliza estas expresiones regulares como un programa de análisis:

internal static string FullMessageMatch = 
    @"\A(?<header>(?:[^\r\n]+\r\n)*)(?<header_term>\r\n)(?<body>.*)\z"; 
internal static string HeadersMatch = 
    @"^(?<header_key>[-A-Za-z0-9]+)(?<seperator>:[ \t]*)(?<header_value>([^\r\n]|\r\n[ \t]+)*)(?<terminator>\r\n)"; 
internal static string HeaderSeperator = 
    "\r\n"; 
internal static string KeyValueSeparator = 
    @"\A:[ \t]*\z"; 
+0

John, ¿en lugar de usar su biblioteca quizás podría usar una clase o dos de su fuente? –

+3

Sí, por supuesto. –

+0

John, estoy usando tu fuente, ¡y es muy útil! Sin embargo, al realizar cambios, sería muy útil tener correos electrónicos para verificar. ¿Tiene algún correo electrónico en una suite que podría usar para conducir las pruebas? Gracias - Erick –

3

No, no hay manera de hacerlo todavía. Microsoft no ha creado un convertidor de texto a mensaje del mismo modo que no han creado una biblioteca POP3 o IMAP. Desgraciado.

+1

¡La única respuesta real a la pregunta! – elshev

1

Salida Mail.dll .NET mail component, tiene construido en MIME apoyo, Unicode, y el apoyo multinacional de correo electrónico:

MailBuilder builder = new MailBuilder(); 

// Here you get the message class with attachments, visuals 
IMail message = builder.CreateFromEml(File.ReadAllText("test.eml")); 

// you can access entire MIME document: 
MimeDocument document = message.Document; 

Tenga en cuenta que Mail.dll es un producto comercial que he creado.

Puede descargarlo aquí: https://www.limilabs.com/mail.

0

echa un vistazo a nuestro Rebex Secure Mail que incluye un (MUY) decente S/MIME analizador. Features incluyen:

  • High level MailMessage API (mensaje como se ve en el cliente de correo electrónico común)
  • Low level MimeMessage API (acceso a S/árbol interno MIME)
  • Soporte para MIME, S/MIME
  • Soporte para TNEF (Winmail.dat) producido por Microsoft Outlook
  • El cifrado de mensajes
  • la firma de mensajes
  • Unicode y soporte de internacionalización
  • Linked resources list (utilizado para la CSS en línea y las imágenes en los correos HTML)
  • IEnumerable <T> soporte (necesario para LINQ)
  • admite todas las estructuras compactas .NET y .NET lanzadas hasta hoy

El analizador es parte de Rebex Secure Mail y puede download it here.

2

Recomiendo IMAP y MIME parser libs de Lumisoft. Lo usé antes y es fácil trabajar con él. Puede descargarlo desde aquí: http://www.lumisoft.ee/lsWWW/Download/Downloads/Net/ La lib tiene muchos otros protocolos como ftp, pop3, etc. y estoy seguro de que el sc está disponible. Trate de google para ello, también se puede encontrar en codeproject.com respecto

+0

¿Tiene un simple ejemplo imap? –

+1

revise esto http://www.lumisoft.ee/lswww/download/downloads/Examples/ – thiagoleite

Cuestiones relacionadas