Филтриране и извличане на MBOX съобщения

Ролята на филтрирането на съобщения

Когато работите с големи MBOX архиви, зареждането на всяко съобщение в паметта може да бъде неефикасно и излишно. В повечето случаи разработчиците трябва само да сканират основните метаданни като тема, подател, получател или времеви печат, за да:

  • Показване на списък със съобщения в потребителски интерфейс
  • Прилагане на персонализирани филтри преди извличане
  • Генериране на отчети или обобщения
  • Индексиране на съобщения за търсене

Филтрирането избягва натоварването от парсиране на пълните тела на съобщенията или прикачени файлове, правейки приложенията по‑бързи и по‑масштабируеми.

Достъп до метаданни на съобщения

Aspose.Email предоставя MboxMessageInfo клас, проектиран да достъпва основни мета данни за съобщения без четене на цялото съдържание на MailMessage. Той служи като обобщен обект и се връща при извикване на MboxStorageReader.EnumerateMessageInfo().

Ключови свойства, изложени от MboxMessageInfo за извличане на информация за съобщение включва:

  • DateTime Date - Получава датата на съобщението
  • MailAddress From - Получава адреса на подателя
  • string Subject - Получава темата на съобщението
  • MailAddressCollection Към - Получава колекцията от адреси, съдържаща получателите на съобщението
  • MailAddressCollection CC - Получава колекцията от адреси, съдържаща CC получатели
  • MailAddressCollection Bcc - Получава колекцията от адреси, съдържаща BCC получатели на съобщението
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}");
}

Извличане на съобщения по EntryId

Този MboxStorageReader класът включва EnumerateMessageInfo() метод, който ви позволява да итерирате през всяко съобщение в MBOX файл. Чрез използване на този метод е възможно да се извлекат отделни съобщения без необходимостта да се обхожда цялото хранилище многократно. Това подобрява производителността и намалява времето за обработка.

Този MboxMessageInfo клас предоставя EntryId свойство, което предоставя достъп до уникални идентификатори за всяко съобщение в MBOX файла. Този идентификатор може да бъде съхранен в база данни или използван като справка за бързо намиране и извличане на конкретни съобщения при нужда.

Този ExtractMessage(string id) метод в MboxStorageReader класът позволява на разработчиците да извличат съобщения въз основа на техния уникален EntryId. Със ExtractMessage(string id) метод, можете да използвате съхранения EntryId, за да извлечете съответното съобщение и да извършите допълнителни операции с него.

Следният пример с код демонстрира как да извлечете съобщения от MBOX файл, използвайки идентификатори:

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

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

Филтриране и търсене на MBOX имейли с MailQuery

Aspose.Email for .NET предоставя възможност за филтриране или търсене на съобщения в пощенски архиви въз основа на персонализирани заявки. Това позволява на разработчиците да извличат само съобщения, отговарящи на конкретни критерии, подобрявайки производителността и удобството при работа с големи файлове от имейл архиви.

Следният примерен код демонстрира как да приложите критерии за търсене към файл за съхранение на поща с MailQuery API. В този пример съобщенията се избират, ако темата им съдържа фразата „Project Update“ и са изпратени преди днешната дата.

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

Конфигуриране на опции за зареждане при четене на съобщения от MBOX

Следните свойства ще ви позволят да зададете различни опции, свързани със зареждането и обработката на съобщенията:

  • Свойство MailStorageConverter.MboxMessageOptions – получава или задава опции за зареждане на имейл при парсиране на Mbox хранилище.

  • Метод MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) – параметърът EmlLoadOptions определя опциите при четене на съобщение от 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");