Necesito leer el archivo .MSG de Outlook en .NET sin usando la API COM para Outlook (ya que no se instalará en las máquinas en las que se ejecutará mi aplicación). ¿Hay bibliotecas gratuitas de terceros para hacer eso? Quiero extraer los campos From, To, CC y BCC. Los campos de fecha de envío/recepción serían buenos si también están almacenados en archivos MSG.Lectura de archivos .msg
Respuesta
Actualización: he encontrado una tercera biblioteca COM partido llamado Outlook Redemption que está trabajando muy bien para mí en este momento. Si lo usa a través de COM-Interop en .NET, no olvide liberar cada objeto COM una vez que haya terminado con él, de lo contrario, su aplicación se bloquea al azar.
Si abre el archivo .MSG en un editor de texto, creo que encontrará que la información que está buscando se almacena como texto sin formato dentro del archivo. (Es en todos los mensajes que he comprobado al menos)
Sería muy fácil escribir algún código para analizar el archivo buscando líneas que comiencen con "De:" o "Para:" etc. y luego extraer el información que necesitas
Si necesita el cuerpo del correo electrónico también, eso puede ser un poco más complicado.
Creo thats .eml archivos .msg son binarios –
Lo son, pero él es correcto Pruébalo y compruébalo – rotard
Microsoft ha documentado esto: .MSG File Format Specification
gracias y ugh ... eso es un poco más de lo que quería morder :-P –
Es un documento de "Almacenamiento estructurado". He utilizado con éxito Andrew Peace's code para leer estos en el pasado, incluso bajo .NET (usando C++/CLI) - es limpio y bastante fácil de entender. Básicamente, necesita averiguar qué registros necesita y consultarlos; se pone un poco complicado, ya que las diferentes versiones de Outlook y diferentes tipos de mensajes darán lugar a registros diferentes ...
Hay un código disponible en CodeProject para leer archivos .msg sin COM. Ver here.
no está mal (¡es gratis y de código abierto!) Pero no admite ninguno de los campos de fecha en un mensaje (todavía) –
Con una pequeña modificación, esto también puede guardar los archivos adjuntos (ahora mismo solo muestra si hay alguno, y tamaño). –
@Steve un comentarista compartió las instrucciones para obtener la fecha de envío/recepción aquí: http://www.codeproject.com/Articles/32899/Reading-an-Outlook-MSG-File-in-C?msg=2932319#xx2932319xx (desplácese hasta el final) – Ciaran
Aquí hay algunos ejemplos de código VBA usando Outlook Redemption que Huseyint encontró.
Public Sub ProcessMail()
Dim Sess As RDOSession
Dim myMsg As RDOMail
Dim myString As String
Set Sess = CreateObject("Redemption.RDOSession")
Set myMsg = Sess.GetMessageFromMsgFile("C:\TestHarness\kmail.msg")
myString = myMsg.Body
myMsg.Body = Replace(myString, "8750", "XXXX")
myMsg.Save
End Sub
Puede probar nuestra biblioteca (comercial) Rebex Secure Mail. Puede leer el formato MSG de Outlook. Código siguiente muestra cómo:
// Load message
MailMessage message = new MailMessage();
message.Load(@"c:\Temp\t\message.msg");
// show From, To and Sent date
Console.WriteLine("From: {0}", message.From);
Console.WriteLine("To: {0}", message.To);
Console.WriteLine("Sent: {0}", message.Date.LocalTime);
// find and try to parse the first 'Received' header
MailDateTime receivedDate = null;
string received = message.Headers.GetRaw("Received");
if (received != null)
{
int lastSemicolon = received.LastIndexOf(';');
if (lastSemicolon >= 0)
{
string rawDate = received.Substring(lastSemicolon + 1);
MimeHeader header = new MimeHeader("Date", rawDate);
receivedDate = header.Value as MailDateTime;
}
}
// display the received date if available
if (receivedDate != null)
Console.WriteLine("Received: {0}", receivedDate.LocalTime);
Más información sobre las fechas de envío y recepción y cómo están representados en el mensaje se puede encontrar en http://forum.rebex.net/questions/816/extract-senttime-receivetime-and-time-zones
- 1. Lectura de archivos MP3
- 2. Lectura de archivos MIDI
- 3. Lectura de archivos .DXF
- 4. .msg file gives download error
- 5. La diferencia entre Handler.dispatchMessage (msg) y Handler.sendMessage (msg)
- 6. lectura C archivos binarios
- 7. Archivo Parse .msg con C#
- 8. Ruby: Lectura de archivos PDF
- 9. FileSystemObject - Lectura de archivos Unicode
- 10. Delphi y MSG archivo
- 11. Repository Commit Msg Etiquette
- 12. Pipe vs msg queue
- 13. Creación de un archivo .MSG de Outlook en C#
- 14. Lectura de archivos de Excel con xlrd
- 15. Lectura de archivos de Guitar Pro
- 16. ¿Qué significa msg en Mirth?
- 17. guardar System.Net.mail.MailMessage como archivo .msg
- 18. Lectura de archivos .mat en Python
- 19. Lectura de archivos delimitados en C++
- 20. Lectura de archivos * .wav en Python
- 21. Lectura de archivos completos en Lua
- 22. lectura/escritura de archivos bmp en c
- 23. Lectura de archivos CSV en C#
- 24. Force IOException durante la lectura de archivos
- 25. Apache POI excepción de archivos xlsx lectura
- 26. C# TextWriter, permite la lectura de archivos:
- 27. Lectura de archivos wav en Java
- 28. Lectura de archivos Android.mk en subdirectores recursivamente
- 29. lectura y XML escritura de archivos
- 30. Lectura programática de archivos PDF en C#
wow, lo probé y es muy fácil de usar. Agregaré una respuesta con un bit de código de arnés de prueba. – Knox