Tengo un directorio de archivos .eml que contienen conversaciones de correo electrónico. ¿Hay un enfoque recomendado en C# de análisis de archivos de este tipo?Recomendaciones sobre el análisis de archivos .eml en C#
Respuesta
Lo que probablemente necesite es un analizador de correo electrónico/MIME. Analizar todo el campo de encabezado no es muy difícil, pero separar varios tipos MIME como imágenes, archivos adjuntos, varias partes de texto y html, etc. puede ser muy complejo.
Utilizamos una herramienta de terceros, pero existen muchas herramientas/bibliotecas de C#. Buscar un analizador MIME gratis de C# en Google. Como si tuviera éste:
http://www.codeproject.com/Articles/11882/Advanced-MIME-Parser-Creator-Editor http://www.lumisoft.ee/lswww/download/downloads/Net/info.txt
Conseguir un analizador MIME decente sería probablemente un camino a seguir. Usted puede tratar de utilizar un analizador MIME libre (como this one de CodeProject) pero los comentarios del autor código como este
trabajaba en este casi al mismo tiempo que trabajé en una clase contenedora para archivos MSG . Gran diferencia en la dificultad . Donde envoltorio EML clase tal vez tomó un día para leer la especificación y obtener a la derecha, la clase contenedora MSG tomó una semana.
me hizo sentir curiosidad por la calidad del código. Estoy seguro de que puede hackear un analizador de mime que analiza el 95% del correo electrónico correctamente en unos días/horas. También estoy seguro de que acertar el 5% restante llevará meses. Considere manejar S/MIME (correo electrónico cifrado y firmado), Unicode, correos electrónicos mal formados producidos por clientes y servidores de correo, varios esquemas de codificación, problemas de internacionalización, asegurarse de que los correos electrónicos formados intencionalmente no bloqueen su aplicación, etc ...
Si el correo electrónico que necesita analizar viene de una sola fuente, el analizador sucio & puede ser suficiente. Si necesita analizar correos electrónicos de la naturaleza, podría ser necesaria una solución mejor.
Recomendaría nuestro Rebex Secure Mail component, pero estoy seguro de que obtendrá resultados decentes con componentes de otros proveedores también.
Asegurarse de que el analizador de su elección funciona correctamente en el infame "Mensaje de muestra de Mime Torture" preparado por Mike Crispin (coautor de MIME e IMAP RFC). El testing message is displayed in MIME Explorer sample y puede ser downloaded en el paquete de instalación.
siguiente código muestra cómo leer y analizar el archivo EML:
using Rebex.Mail;
MailMessage message = new MailMessage();
message.Load("file.eml");
LumiSoft incluye un Mime parser.
Sasa incluye un analizador Mime también.
Sasa funcionó muy bien. Gracias Mauricio –
uso de referencia en caso de que alguien esté buscando: https://github.com/fschwiet/ManyConsole/blob/master/SampleConsole/DumpEmlFiles.cs –
Ahora está en https://github.com/fschwiet/ManyConsole/blob/ master/SampleConsole/DumpEmlFilesCommand.cs –
he publicado un proyecto de ejemplo para ilustrar esta respuesta to Github
El CDO COM DLL es parte de Windows/IIS y se puede hacer referencia en .NET. Proporcionará un análisis preciso y un bonito modelo de objetos. Úselo en conjunción con una referencia a ADODB.DLL.
public CDO.Message LoadEmlFromFile(String emlFileName)
{
CDO.Message msg = new CDO.MessageClass();
ADODB.Stream stream = new ADODB.StreamClass();
stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown, ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, String.Empty, String.Empty);
stream.LoadFromFile(emlFileName);
stream.Flush();
msg.DataSource.OpenObject(stream, "_Stream");
msg.DataSource.Save();
stream.Close();
return msg;
}
- Agregado de agosto de 2017 También puedes ver MimeKit: https://github.com/jstedfast/MimeKit. Es compatible con .Netstandard, por lo que se ejecutará multiplataforma.
Ries, he buscado una solución todo el día, he encontrado muchos analizadores y bibliotecas .net que funcionan en parte. Su biblioteca sugerida de Windows funciona al 100%. Esta respuesta debe estar en primer lugar y por encima de otros. – Tomas
¿ha podido usar esto desde una aplicación de 64 bits? ¿Dónde hizo referencia a la DLL? –
Pude usar esta solución en Windows 2008 Standard R2, desafortunadamente no funciona en Windows 2008 Standard (no R2). También ofrece muchos problemas compatibles durante el uso en Windows 2008 o Windows 7. – Tomas
Probar:
- febootimail
- SmtpExpress
- LinkWS Boletín Turbo
- emlBridge - importar archivos EML a Outlook y prácticamente cualquier otro cliente de correo electrónico
- Boletín 2.1 Turbo
- ThunderStor (emlResender)
- Ruby (usando eml2mbox). Ver jimbob method.
- Evolución - crear un nuevo mensaje, adjuntar el archivo EML,
Escribir un programa:
- en C# (Ver [esto] [4] y this). Ver: Source code.
- using Rebel Secure Mail library
- .NET (Ver this, y thisthis)
Soluciones:
- $ mail.eml gato | mail -s -c Pero los encabezados no se analizarán ni los archivos adjuntos.
- soltarlos a su cuenta Gmail (Firefox guardarlas como archivos adjuntos)
La pregunta especifica C# .NET pero sus respuestas en la sección Try apuntan a soluciones que no son C#. – CodeMonkeyKing
simplemente empecé a usar el Mimo-parte de Papercut para esto. Parece decente y simple a primera vista.
public void ProcessRawContents(string raw)
{
// NB: empty lines may be relevant for interpretation and for content !!
var lRawLines = raw.Split(new []{"\r\n"}, StringSplitOptions.None);
var lMailReader = new MimeReader(lRawLines);
var lMimeEntity = lMailReader.CreateMimeEntity();
MailMessageEx Email = lMimeEntity.ToMailMessageEx();
// ...
}
(MailMessageEx
es, por supuesto, derivado de MailMessage
.)
Follow this link for a good solution:
El resumen del artículo es de 4 pasos (El segundo paso por debajo de falta en el artículo, pero es necesario):
Agregue una referencia a "Microsoft CDO para Biblioteca de Windows 2000", que se puede encontrar en la pestaña 'COM' en Visua l Diálogo 'Agregar referencia' de Studio. Esto agregará 2 referencias a "ADODB" y "CDO" en su proyecto.
Deshabilitar la incrustación de tipos Interop para la referencia 2 "ADODB" y "CDO".(Referencias -> ADODB -> Propiedades -> Set 'Insertar Interop Tipos' False y repetir el mismo para CDO)
añade el siguiente método en el código:
protected CDO.Message ReadMessage(String emlFileName) { CDO.Message msg = new CDO.MessageClass(); ADODB.Stream stream = new ADODB.StreamClass(); stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown, ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, String.Empty, String.Empty); stream.LoadFromFile(emlFileName); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); return msg; }
Llame a este método por el al pasar la ruta completa de su archivo eml y el objeto CDO.Message que devuelve tendrá toda la información analizada que necesita, incluyendo To, From, Subject, Body.
¿Puede esto también pasar el Adjunto incluido en EML? – Rich
Aspose.Email para .NET
Aspose.Email para .NET es un conjunto de componentes para trabajar con mensajes de correo electrónico desde las aplicaciones .NET. Hace que sea fácil trabajar con varios formatos de mensaje de correo electrónico y archivos de almacenamiento de mensajes (PST/OST) junto con las capacidades de envío y recepción de mensajes.
Aspose.Email hace que sea fácil crear, leer y manipular una serie de formatos de mensaje tales como MSG, EML , archivos MHT y EMLX sin la necesidad de instalar Microsoft Outlook. No solo puede cambiar el contenido del mensaje , sino también manipular (agregar, extraer y eliminar) los archivos adjuntos de un objeto de mensaje. Puede personalizar encabezados de mensaje al agregar o eliminar destinatarios, cambiar el asunto u otras propiedades. También le da control completo sobre un mensaje de correo electrónico al proporcionar acceso a sus propiedades Mapi.
- http://www.aspose.com/.net/email-component.aspx
- https://www.nuget.org/packages/Aspose.Email/
- Hay una versión de evaluación con las siguientes limitaciones: http://www.aspose.com/docs/display/emailnet/Licensing
lector de archivos C# Perspectivas de MSG y sin la necesidad de una perspectiva
MSGReader es una biblioteca de C# .NET 4.0 para leer archivos de Outlook MSG y EML (Mime 1.0). Casi todos los objetos comunes en Outlook son compatibles.
- 1. Enviar archivos eml guardados en el disco
- 2. Cargando archivos .eml en javax.mail.Messages
- 3. Recomendaciones sobre el trazado de un gráfico
- 4. Recomendaciones sobre cómo hacer el diseño OOP
- 5. ¿Recomendaciones sobre cómo anotar archivos PDF mientras trabaja con Emacs?
- 6. de análisis de archivos en C++
- 7. Recomendaciones de búsqueda Recomendaciones
- 8. Biblioteca PHP para generar archivos de correo electrónico EML?
- 9. ¿Recomendaciones para una herramienta de análisis de montón para Java?
- 10. Análisis de archivos de registro Glassfish
- 11. Abrir archivos .eml en el modo de composición en Outlook 2010
- 12. Ocaml - Archivos y análisis
- 13. Python: Análisis en archivos CSV 100,000 líneas x 40 columnas
- 14. Análisis regular sobre series de tiempo irregulares
- 15. Recomendaciones sobre una Biblioteca de acoplamiento de WPF
- 16. Análisis de código C#
- 17. Recomendaciones para 'C' Project Architecture Guidelines?
- 18. Recomendaciones para la información sobre herramientas de jQuery
- 19. jQuery: ¿hay recomendaciones sobre los complementos de jQuery Ribbon?
- 20. Análisis de archivos de texto en Java
- 21. .net grid computing computing migration, recomendaciones sobre bibliotecas, arquitectura
- 22. Análisis de IPv6 en C
- 23. análisis de texto en C
- 24. Análisis rápido de PHP en C#
- 25. Recomendaciones para el acceso a la base de datos C#
- 26. Recomendaciones de jQuery FileManager
- 27. Análisis de archivos de texto con Python
- 28. Análisis XML String en C#
- 29. ¿El mejor método de análisis de archivos de texto en C#?
- 30. Análisis de uso de software en C#
+1 para "También estoy seguro de que conseguir la derecha el 5% restante se llevará meses" –