Đọc tệp MBOX

Khả Năng Đọc của Aspose.Email

Mozilla Thunderbird là một ứng dụng khách email mã nguồn mở, đa nền tảng, được phát triển bởi Mozilla Foundation. Nó lưu trữ email trong cấu trúc tệp riêng, quản lý các chỉ mục tin nhắn và thư mục con thông qua các định dạng tệp độc quyền. Thunderbird tạo một tệp .mbox cho mỗi thư mục email (ví dụ: Inbox, Sent, Trash), và lưu các tệp này trong thư mục hồ sơ của người dùng. Mỗi tệp chứa tất cả các tin nhắn của thư mục đó dưới dạng nối tiếp.

Aspose.Email cho .NET cung cấp API để đọc tin nhắn từ các tệp .mbox của Thunderbird bằng cách sử dụng MboxrdStorageReader lớp cho phép các nhà phát triển:

  • Mở và đọc các tin nhắn tuần tự, từng cái một
  • Lấy siêu dữ liệu như Chủ đề, Người gửi, Người nhận, Ngày, v.v., mà không tải toàn bộ nội dung
  • Trích xuất từng tin nhắn bằng cách sử dụng bộ định danh duy nhất (EntryId)
  • Bảo tồn mã hoá, tệp đính kèm TNEF và định dạng
  • Đọc tệp một cách bất đồng bộ để hiệu năng tốt hơn trên các kho lưu trữ lớn

Đọc Tệp MBOX Đồng Bộ

đọc tin nhắn từ tệp lưu trữ thư của Mozilla Thunderbird. Bài viết này chỉ cách đọc các tin nhắn từ lưu trữ email Thunderbird:

  1. Mở tệp lưu trữ Thunderbird trong FileStream.
  2. Tạo một đối tượng của MboxrdStorageReader lớp và truyền luồng trên vào hàm khởi tạo.
  3. Gọi ReadNextMessage() để lấy tin nhắn đầu tiên.
  4. Sử dụng cùng ReadNextMessage() trong vòng lặp while để đọc tất cả các tin nhắn.
  5. Đóng tất cả các luồng.

Đoạn mã dưới đây cho bạn thấy cách đọc tất cả các tin nhắn từ bộ lưu trữ thư của Thunderbird.

// The path to the File directory.
var dataDir = RunExamples.GetDataDir_Thunderbird();

// Open the storage file with FileStream
var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read);
// Create an instance of the MboxrdStorageReader class and pass the stream
var reader = new MboxrdStorageReader(stream, false);
// Start reading messages
var message = reader.ReadNextMessage();

// Read all messages in a loop
while (message != null)
{
    // Manipulate message - show contents
    Console.WriteLine("Subject: " + message.Subject);
    // Save this message in EML or MSG format
    message.Save(message.Subject + ".eml", SaveOptions.DefaultEml);
    message.Save(message.Subject + ".msg", SaveOptions.DefaultMsgUnicode);

    // Get the next message
    message = reader.ReadNextMessage();
}

// Close the streams
reader.Dispose();
stream.Close();

Đọc Tệp MBOX Bất Đồng Bộ

Để nâng cao hiệu năng và khả năng đáp ứng khi xử lý các tệp MBOX lớn, Aspose.Email cho .NET cung cấp việc đọc MBOX bất đồng bộ thông qua CreateReaderAsync phương thức. Tính năng này đặc biệt hữu ích trong các ứng dụng xử lý kho thư điện tử lớn hoặc thực hiện các thao tác I/O trong các luồng nền hoặc dịch vụ web. Mẫu mã sau minh họa cách đọc tin nhắn email từ tệp MBOX một cách bất đồng bộ bằng cách sử dụng trình đọc lưu trữ Aspose.Email:

string mboxFilePath = "emails.mbox";

    // Create a reader for the MBOX file asynchronously
    using (var reader = await MboxrdStorageReader.CreateReaderAsync(mboxFilePath, CancellationToken.None))
    {
    Console.WriteLine("MBOX reader initialized.");

    // Read messages from the MBOX file
        while (reader.ReadNextMessage() is var message && message != null)
        {
            Console.WriteLine($"Subject: {message.Subject}");
        }
    }

Đọc Tin Nhắn Email Theo Lô Với Hỗ Trợ Phân Trang

Lấy quyền truy cập phân trang vào các tin nhắn được lưu trong các tệp hộp thư. Tính năng này cho phép các nhà phát triển xử lý các kho thư điện tử lớn hiệu quả hơn bằng cách nhận các tin nhắn thành các phần nhỏ hơn - cải thiện hiệu suất và giảm tải bộ nhớ. Sử dụng các phương thức sau của MboxStorageReader lớp:

  • EnumerateMessages(int startIndex, int count) - Trả về một tập hợp có thể lặp lại các đối tượng MailMessage, bắt đầu từ chỉ mục được chỉ định và giới hạn bởi số lượng đã cho.

  • EnumerateMessageInfo(int startIndex, int count) - Trả về một tập hợp có thể lặp lại các đối tượng MboxMessageInfo chỉ chứa siêu dữ liệu, cũng được phân trang theo chỉ mục và số lượng.

Mẫu mã dưới đây minh họa cách đọc một dải tin nhắn cụ thể từ kho thư bằng cách xác định chỉ mục bắt đầu và kích thước lô. Trong ví dụ, phương thức lấy 10 tin nhắn bắt đầu từ chỉ mục 0.

using Aspose.Email.Storage.Mbox;
using Aspose.Email;

var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
int startIndex = 0;
int count = 10; // Retrieve messages in batches of 10

foreach (var message in reader.EnumerateMessages(startIndex, count))
{
    Console.WriteLine("Subject: " + message.Subject);
}

Đặt Mã Hoá Văn Bản Ưu Tiên Khi Tải Tệp MBOX Để Đọc

Tùy chọn mã hoá khả dụng cho MboxrdStorageReader class. Điều này cung cấp các tùy chọn bổ sung để tải tệp mbox và đảm bảo rằng các tin nhắn có nội dung được mã hoá sẽ được đọc và xử lý chính xác. Đoạn mã sau cho thấy cách bạn có thể đặt mã hoá văn bản đáp ứng nhu cầu của mình:

var reader = new MboxrdStorageReader("sample.mbox", new MboxLoadOptions() { PreferredTextEncoding = Encoding.UTF8});
var message = reader.ReadNextMessage();

Lấy tổng số tin nhắn từ tệp MBOX

Cái MboxrdStorageReader lớp cung cấp khả năng đọc số lượng mục có trong tệp MBox. Điều này có thể được sử dụng để phát triển các ứng dụng hiển thị tiến độ hoạt động khi xử lý tệp như vậy.

// The path to the File directory.
var dataDir = RunExamples.GetDataDir_Thunderbird();

using (var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read))
using (var reader = new MboxrdStorageReader(stream, false))
{
    Console.WriteLine("Total number of messages in Mbox file: " + reader.GetTotalItemsCount());
}

Lấy kích thước tin nhắn hiện tại

using (var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read))
using (var reader = new MboxrdStorageReader(stream, false))
{
    MailMessage msg;
    while ((msg = reader.ReadNextMessage()) != null)
    {
        long currentDataSize = reader.CurrentDataSize;

        msg.Dispose();
    }
}