Фільтрація та екстракція повідомлень 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
The MboxStorageReader клас включає EnumerateMessageInfo() метод, який дозволяє перебирати кожне повідомлення у MBOX файлі. Використовуючи цей метод, можна витягнути окремі повідомлення без необхідності багаторазово проходити весь файл. Це підвищує продуктивність і зменшує час обробки.
The MboxMessageInfo class надає EntryId властивість, яка забезпечує доступ до унікальних ідентифікаторів кожного повідомлення у MBOX файлі. Цей ідентифікатор можна зберігати в базі даних або використовувати як посилання для швидкого пошуку та витягування потрібних повідомлень.
The 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 для .NET надає можливість фільтрувати або шукати повідомлення в архівах поштових скриньок за допомогою власних запитів. Це дозволяє розробникам отримувати лише ті повідомлення, які відповідають певним критеріям, підвищуючи продуктивність та зручність роботи з великими файлами архівів.
Нижче наведено приклад коду, який демонструє, як застосувати критерії пошуку до файлу сховища пошти за допомогою API MailQuery. У цьому прикладі повідомлення вибираються, якщо їхня тема містить фразу "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");