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");