Lọc và Trích xuất tin nhắn MBOX

Vai trò của việc lọc tin nhắn

Khi làm việc với các kho lưu trữ MBOX lớn, tải mọi tin nhắn vào bộ nhớ có thể không hiệu quả và không cần thiết. Trong hầu hết các trường hợp, nhà phát triển chỉ cần quét siêu dữ liệu cơ bản như tiêu đề, người gửi, người nhận hoặc thời gian để:

  • Hiển thị danh sách tin nhắn trong giao diện người dùng
  • Áp dụng bộ lọc tùy chỉnh trước khi trích xuất
  • Tạo báo cáo hoặc tóm tắt
  • Lập chỉ mục tin nhắn để tìm kiếm

Lọc tránh được chi phí phân tích toàn bộ nội dung tin nhắn hoặc tệp đính kèm, làm cho ứng dụng nhanh hơn và mở rộng tốt hơn.

Truy cập siêu dữ liệu tin nhắn

Aspose.Email cung cấp MboxMessageInfo lớp được thiết kế để truy cập siêu dữ liệu tin nhắn cơ bản mà không cần đọc toàn bộ nội dung MailMessage. Nó hoạt động như một đối tượng tóm tắt và được trả về khi gọi MboxStorageReader.EnumerateMessageInfo().

Các thuộc tính chính được cung cấp bởi MboxMessageInfo để truy xuất thông tin về một tin nhắn bao gồm:

  • DateTime Ngày - Lấy ngày của tin nhắn
  • MailAddress Từ - Lấy địa chỉ người gửi
  • string Tiêu đề - Lấy tiêu đề tin nhắn
  • MailAddressCollection Đến - Lấy tập hợp địa chỉ chứa người nhận của tin nhắn
  • MailAddressCollection CC - Lấy tập hợp địa chỉ chứa người nhận CC
  • MailAddressCollection Bcc - Lấy tập hợp địa chỉ chứa người nhận BCC của tin nhắn
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}");
}

Trích xuất tin nhắn theo EntryId

Cái MboxStorageReader lớp bao gồm EnumerateMessageInfo() phương thức, cho phép bạn duyệt qua từng tin nhắn trong tệp MBOX. Khi sử dụng phương thức này, bạn có thể trích xuất các tin nhắn riêng lẻ mà không cần phải quét toàn bộ lưu trữ nhiều lần. Điều này cải thiện hiệu suất và giảm thời gian xử lý.

Cái MboxMessageInfo class cung cấp EntryId thuộc tính, cung cấp quyền truy cập vào các định danh duy nhất cho mỗi tin nhắn trong tệp MBOX. Định danh này có thể được lưu trong cơ sở dữ liệu hoặc sử dụng làm tham chiếu để nhanh chóng tìm và trích xuất các tin nhắn cụ thể khi cần.

Cái ExtractMessage(string id) phương thức trong MboxStorageReader lớp cho phép các nhà phát triển trích xuất tin nhắn dựa trên EntryId duy nhất của chúng. Với ExtractMessage(string id) phương thức, bạn có thể sử dụng EntryId đã lưu để lấy tin nhắn tương ứng và thực hiện các thao tác bổ sung với nó.

Mẫu mã sau đây minh họa cách trích xuất tin nhắn từ tệp MBOX bằng cách sử dụng các định danh:

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

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

Lọc và Tìm kiếm email MBOX bằng MailQuery

Aspose.Email cho .NET cung cấp khả năng lọc hoặc tìm kiếm tin nhắn trong các kho lưu trữ hộp thư dựa trên các truy vấn tùy chỉnh. Điều này cho phép nhà phát triển chỉ truy xuất những tin nhắn khớp với tiêu chí cụ thể, cải thiện hiệu suất và khả năng sử dụng khi làm việc với các tệp lưu trữ email lớn.

Đoạn mã mẫu sau đây minh họa cách áp dụng tiêu chí tìm kiếm vào tệp lưu trữ thư bằng MailQuery API. Trong ví dụ này, các tin nhắn được chọn nếu tiêu đề của chúng chứa cụm từ "Project Update" và được gửi trước ngày hôm nay.

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

Cấu hình tùy chọn tải khi đọc tin nhắn từ MBOX

Các tính năng sau sẽ cho phép bạn chỉ định các tùy chọn khác nhau liên quan tới việc tải và xử lý tin nhắn:

  • Thuộc tính MailStorageConverter.MboxMessageOptions - Lấy hoặc đặt các tùy chọn tải email khi phân tích lưu trữ Mbox.

  • Phương thức MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) - Tham số EmlLoadOptions chỉ định các tùy chọn khi đọc tin nhắn từ lưu trữ 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");