Cargar y analizar archivos MSG

Usando Aspose.Email para .NET, los desarrolladores pueden cargar y analizar el contenido de archivos de mensajes de Outlook.

  • Para cargar archivos MSG desde el disco, usa el estático MapiMessage.Load método del MapiMessage clase. La clase proporciona varias funciones estáticas de carga para diferentes escenarios.
  • Para analizar el contenido de un archivo MSG, el MapiMessage expone una serie de métodos y propiedades.

En este artículo aprenderás cómo cargar y analizar un archivo MSG para mostrar su contenido. Las muestras de código con pasos te darán una comprensión clara de cómo implementar la funcionalidad de cargar y analizar archivos MSG de Outlook en tu proyecto.

Primero, aprende a cargar archivos MSG desde un archivo o desde un flujo.

Cargar archivos MSG

El siguiente fragmento de código muestra cómo cargar archivos MSG.

// Create an instance of MapiMessage from file
var msg = MapiMessage.Load(@"message.msg");

// Get subject
Console.WriteLine("Subject:" + msg.Subject);

// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);

// Get body
Console.WriteLine("Body" + msg.Body);

// Get recipients information
Console.WriteLine("Recipient: " + msg.Recipients);

// Get attachments
foreach (var att in msg.Attachments)
{
    Console.Write("Attachment Name: " + att.FileName);
    Console.Write("Attachment Display Name: " + att.DisplayName);
}

El siguiente ejemplo de código muestra cómo usar MailMessage para cargar un mensaje en formato MSG.


var eml = MailMessage.Load("message.msg");

Cabe señalar que el mensaje resultante se convierte al formato EML, incluidos los adjuntos de mensajes incrustados. No utilice este método de carga si desea preservar algunas propiedades específicas del formato msg del mensaje original.

Para preservar el formato original de los archivos adjuntos de mensajes incrustados, use el msgLoadOptions.PreserveEmbeddedMessageFormat propiedad.


var msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.PreserveEmbeddedMessageFormat = true;
var msg = MailMessage.Load(stream, msgLoadOptions);

Cargar desde flujo

El siguiente fragmento de código muestra cómo cargar un archivo desde flujo.

// Create an instance of MapiMessage from file
byte[] bytes = File.ReadAllBytes(@"message.msg");

using (MemoryStream stream = new MemoryStream(bytes))
{
    stream.Seek(0, SeekOrigin.Begin);
    // Create an instance of MapiMessage from file
    MapiMessage msg = MapiMessage.Load(stream);

    // Get subject
    Console.WriteLine("Subject:" + msg.Subject);

    // Get from address
    Console.WriteLine("From:" + msg.SenderEmailAddress);

    // Get body
    Console.WriteLine("Body" + msg.Body);

}

Convertir EML a MSG conservando el formato EML incrustado

Los archivos EML pueden cargarse en MapiMessage clase instanciando una MailMessage objeto y pasándolo a MapiMessage.FromMailMessage método. Si el archivo EML contiene archivos EML incrustados, use MapiConversionOptions.PreserveEmbeddedMessageFormat para retener el formato de los archivos EML incrustados. El fragmento de código a continuación muestra cómo cargar archivos EML en MapiMessage mientras se preserva el formato de los archivos EML incrustados.

// Load the EML file into a MailMessage object
var mailMessage = MailMessage.Load(emlFilePath);

// Set conversion options to preserve the format of embedded EML messages
var options = new MapiConversionOptions
    {
        PreserveEmbeddedMessageFormat = true
    };

// Convert MailMessage to MapiMessage, preserving embedded EML files
var mapiMessage = MapiMessage.FromMailMessage(mailMessage, options);

// Save the converted message in MSG format
mapiMessage.Save(msgFilePath);

Analizar archivos de mensajes de Outlook

Aspose.Email para .NET proporciona el MapiMessage clase que se utiliza para abrir y analizar un archivo MSG. Dado que puede haber muchos destinatarios en un archivo MSG, el MapiMessage La clase expone el Destinatarios propiedad que devuelve un MapiRecipientCollection que representa una colección de MapiRecipient objetos. El MapiRecipient el objeto también expone métodos para trabajar con atributos de destinatario.

La siguiente secuencia de pasos cumple este propósito:

  1. Cree una instancia de la MapiMessage clase usando el MapiMessage.Load método estático.
  2. Mostrar el nombre del remitente, asunto y cuerpo del archivo MSG usando SenderName, Subject y Cuerpo propiedades.
  3. Utilice el Destinatarios propiedad para obtener una referencia a la colección de MapiRecipient objetos asociados con el archivo MSG.
  4. Iterar a través del MapiRecipientCollection colección para mostrar el contenido de cada MapiRecipient objeto a través de sus métodos públicos.
//Instantiate an MSG file to load an MSG file from disk
var outlookMessageFile = MapiMessage.Load(dataDir + "message.msg");
//Display sender's name
Console.WriteLine("Sender Name : " + outlookMessageFile.SenderName);
//Display Subject
Console.WriteLine("Subject : " + outlookMessageFile.Subject);
//Display Body
Console.WriteLine("Body : " + outlookMessageFile.Body);
//Display Recipient's info
Console.WriteLine("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
foreach (var rcp in outlookMessageFile.Recipients)
{
	//Display recipient email address
	Console.WriteLine("Email : " + rcp.EmailAddress);
	//Display recipient name
	Console.WriteLine("Name : " + rcp.DisplayName);
	//Display recipient type
	Console.WriteLine("Recipient Type : " + rcp.RecipientType);
}