Filtrado y extracción de mensajes MBOX

El papel del filtrado de mensajes

Al trabajar con archivos MBOX grandes, cargar cada mensaje en memoria puede ser ineficiente e innecesario. En la mayoría de los casos, los desarrolladores solo necesitan escanear metadatos básicos como el asunto, remitente, destinatario o marca temporal para:

  • Mostrar una lista de mensajes en una interfaz de usuario
  • Aplicar filtros personalizados antes de la extracción
  • Generar informes o resúmenes
  • Indexar mensajes para búsqueda

El filtrado evita la sobrecarga de analizar cuerpos completos de mensajes o adjuntos, haciendo que las aplicaciones sean más rápidas y escalables.

Acceder a los metadatos del mensaje

Aspose.Email proporciona el MboxMessageInfo clase diseñada para acceder a los metadatos básicos del mensaje sin leer el contenido completo del MailMessage. Actúa como un objeto de resumen y se devuelve al llamar a MboxStorageReader.EnumerateMessageInfo().

Propiedades clave expuestas por MboxMessageInfo para recuperar información sobre un mensaje incluya:

  • DateTime Date - Obtiene la fecha del mensaje
  • MailAddress From - Obtiene la dirección del remitente
  • string Subject - Obtiene el asunto del mensaje
  • MailAddressCollection Para - Obtiene la colección de direcciones que contiene los destinatarios del mensaje
  • MailAddressCollection CC - Obtiene la colección de direcciones que contiene los destinatarios CC
  • MailAddressCollection Bcc - Obtiene la colección de direcciones que contiene los destinatarios BCC del mensaje
MboxStorageReader reader = MboxStorageReader.CreateReader(fileName, new MboxLoadOptions());

foreach (var mboxMessageInfo in reader.EnumerateMessageInfo())
{
    Console.Writeline($"Subject: {mboxMessageInfo.Subject}");
    Console.Writeline($"Date: {mboxMessageInfo.Date}");
    Console.Writeline($"From: {mboxMessageInfo.From}");
    Console.Writeline($"To: {mboxMessageInfo.To}");
    Console.Writeline($"CC: {mboxMessageInfo.CC}");
    Console.Writeline($"Bcc: {mboxMessageInfo.Bcc}");
}

Extraer mensajes por EntryId

El MboxStorageReader la clase incluye el EnumerateMessageInfo() método, que le permite iterar a través de cada mensaje en un archivo MBOX. Al usar este método, es posible extraer mensajes individuales sin necesidad de recorrer todo el almacenamiento repetidamente. Esto mejora el rendimiento y reduce el tiempo de procesamiento.

El MboxMessageInfo class proporciona el EntryId propiedad, que brinda acceso a identificadores únicos para cada mensaje en el archivo MBOX. Este identificador puede almacenarse en una base de datos o usarse como referencia para encontrar y extraer rápidamente mensajes específicos cuando sea necesario.

El ExtractMessage(string id) método en el MboxStorageReader la clase permite a los desarrolladores extraer mensajes basándose en su EntryId único. Con el ExtractMessage(string id) método, puede aprovechar el EntryId almacenado para recuperar el mensaje correspondiente y realizar operaciones adicionales con él.

El siguiente ejemplo de código demuestra cómo extraer mensajes de un archivo MBOX usando identificadores:

MboxStorageReader reader = MboxStorageReader.CreateReader("my.mbox", new MboxLoadOptions());

foreach (MboxMessageInfo msgInfo in reader.EnumerateMessageInfo())
{
    MailMessage eml = reader.ExtractMessage(msgInfo.EntryId, new EmlLoadOptions());
}

Filtrar y buscar correos MBOX usando MailQuery

Aspose.Email para .NET brinda la capacidad de filtrar o buscar mensajes dentro de archivos de buzón basados en consultas personalizadas. Esto permite a los desarrolladores recuperar solo los mensajes que cumplen criterios específicos, mejorando el rendimiento y la usabilidad al trabajar con archivos de archivo de correo electrónico grandes.

El siguiente ejemplo de código muestra cómo aplicar criterios de búsqueda a un archivo de almacenamiento de correo con la API MailQuery. En este ejemplo, se seleccionan los mensajes cuyo asunto incluye la frase "Project Update" y que fueron enviados antes de la fecha de hoy.

using Aspose.Email.Storage.Mbox;
using Aspose.Email;

var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
var mqb = new MailQueryBuilder();
mqb.Subject.Contains("Project Update");
mqb.SentDate.Before(DateTime.Today);

foreach (var message in reader.EnumerateMessages(mqb.GetQuery()))
{
    Console.WriteLine("Subject: " + message.Subject);
}

Configurar opciones de carga al leer mensajes de MBOX

Las siguientes características le permitirán especificar varias opciones relacionadas con la carga y el procesamiento de mensajes:

  • Propiedad MailStorageConverter.MboxMessageOptions - Obtiene o establece las opciones de carga de correo electrónico al analizar un almacenamiento Mbox.

  • Método MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) - El parámetro EmlLoadOptions especifica opciones al leer un mensaje del almacenamiento Mbox.

var reader = new MboxrdStorageReader(fileName, new MboxLoadOptions());
// Read messages preserving tnef attachments.
var eml = reader.ReadNextMessage(new EmlLoadOptions {PreserveTnefAttachments = true});
MailStorageConverter.MboxMessageOptions(new EmlLoadOptions {PreserveTnefAttachments = true});
// Convert messages from mbox to pst preserving tnef attachments.
var pst = MailStorageConverter.mboxToPst("Input.mbox", "Output.pst");