Филтриране и извличане на 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");