Tải và Phân tích Tệp MSG

Sử dụng Aspose.Email cho .NET, các nhà phát triển có thể tải và phân tích nội dung từ các tệp tin nhắn Outlook.

  • Để tải các tệp MSG từ đĩa, sử dụng tĩnh MapiMessage.Load phương thức của MapiMessage lớp. Lớp này cung cấp một số hàm tải tĩnh cho các kịch bản khác nhau.
  • Để phân tích nội dung tệp MSG, MapiMessage phơi bày một số phương thức và thuộc tính.

Trong bài viết này, bạn sẽ học cách tải và phân tích một tệp MSG để hiển thị nội dung của nó. Các mẫu mã kèm hướng dẫn sẽ giúp bạn hiểu rõ cách triển khai chức năng tải và phân tích các tệp MSG của Outlook trong dự án của mình.

Đầu tiên, học cách tải các tệp MSG từ tệp hoặc từ luồng.

Tải Các Tệp MSG

Đoạn mã sau đây cho bạn thấy cách tải các tệp MSG.

// Create an instance of MapiMessage from file
var msg = MapiMessage.Load(@"message.msg");

// Get subject
Console.WriteLine("Subject:" + msg.Subject);

// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);

// Get body
Console.WriteLine("Body" + msg.Body);

// Get recipients information
Console.WriteLine("Recipient: " + msg.Recipients);

// Get attachments
foreach (var att in msg.Attachments)
{
    Console.Write("Attachment Name: " + att.FileName);
    Console.Write("Attachment Display Name: " + att.DisplayName);
}

Ví dụ mã dưới đây cho thấy cách sử dụng MailMessage để tải một tin nhắn ở định dạng MSG.


var eml = MailMessage.Load("message.msg");

Cần lưu ý rằng tin nhắn đầu ra sẽ được chuyển đổi sang định dạng EML, bao gồm các tệp đính kèm tin nhắn nhúng. Không sử dụng phương pháp tải này nếu bạn muốn giữ một số thuộc tính định dạng msg cụ thể của tin nhắn gốc.

Để giữ nguyên định dạng gốc của các tệp đính kèm tin nhắn nhúng, sử dụng msgLoadOptions.PreserveEmbeddedMessageFormat thuộc tính.


var msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.PreserveEmbeddedMessageFormat = true;
var msg = MailMessage.Load(stream, msgLoadOptions);

Tải từ Luồng

Đoạn mã sau cho bạn thấy cách tải tệp từ luồng.

// Create an instance of MapiMessage from file
byte[] bytes = File.ReadAllBytes(@"message.msg");

using (MemoryStream stream = new MemoryStream(bytes))
{
    stream.Seek(0, SeekOrigin.Begin);
    // Create an instance of MapiMessage from file
    MapiMessage msg = MapiMessage.Load(stream);

    // Get subject
    Console.WriteLine("Subject:" + msg.Subject);

    // Get from address
    Console.WriteLine("From:" + msg.SenderEmailAddress);

    // Get body
    Console.WriteLine("Body" + msg.Body);

}

Chuyển Đổi EML sang MSG Khi Bảo Vệ Định Dạng EML Nhúng

Các tệp EML có thể được tải vào MapiMessage lớp bằng cách khởi tạo một MailMessage đối tượng và truyền nó tới MapiMessage.FromMailMessage phương thức. Nếu tệp EML chứa các tệp EML nhúng, hãy sử dụng MapiConversionOptions.PreserveEmbeddedMessageFormat để giữ nguyên định dạng của các tệp EML nhúng. Đoạn mã dưới đây cho thấy cách tải các tệp EML vào MapiMessage trong khi giữ nguyên định dạng của các tệp EML nhúng.

// Load the EML file into a MailMessage object
var mailMessage = MailMessage.Load(emlFilePath);

// Set conversion options to preserve the format of embedded EML messages
var options = new MapiConversionOptions
    {
        PreserveEmbeddedMessageFormat = true
    };

// Convert MailMessage to MapiMessage, preserving embedded EML files
var mapiMessage = MapiMessage.FromMailMessage(mailMessage, options);

// Save the converted message in MSG format
mapiMessage.Save(msgFilePath);

Phân Tích Các Tệp Tin Nhắn Outlook

Aspose.Email cho .NET cung cấp MapiMessage lớp được sử dụng để mở và phân tích tệp MSG. Vì có thể có nhiều người nhận trong một tệp MSG, thì MapiMessage lớp này cung cấp Người Nhận thuộc tính trả về một MapiRecipientCollection mà đại diện cho một bộ sưu tập của MapiRecipient các đối tượng. Các MapiRecipient đối tượng này còn phơi bày các phương thức để làm việc với thuộc tính người nhận.

Chuỗi các bước sau thực hiện mục đích này:

  1. Tạo một đối tượng của MapiMessage lớp sử dụng MapiMessage.Load phương thức tĩnh.
  2. Hiển thị tên người gửi, tiêu đề và nội dung từ tệp MSG bằng cách sử dụng SenderName, Tiêu đề và Nội dung các thuộc tính.
  3. Sử dụng Người Nhận thuộc tính để lấy tham chiếu đến bộ sưu tập của MapiRecipient đối tượng liên quan đến tệp MSG.
  4. Lặp qua MapiRecipientCollection bộ sưu tập để hiển thị nội dung cho mỗi MapiRecipient đối tượng thông qua các phương thức công khai của nó.
//Instantiate an MSG file to load an MSG file from disk
var outlookMessageFile = MapiMessage.Load(dataDir + "message.msg");
//Display sender's name
Console.WriteLine("Sender Name : " + outlookMessageFile.SenderName);
//Display Subject
Console.WriteLine("Subject : " + outlookMessageFile.Subject);
//Display Body
Console.WriteLine("Body : " + outlookMessageFile.Body);
//Display Recipient's info
Console.WriteLine("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
foreach (var rcp in outlookMessageFile.Recipients)
{
	//Display recipient email address
	Console.WriteLine("Email : " + rcp.EmailAddress);
	//Display recipient name
	Console.WriteLine("Name : " + rcp.DisplayName);
	//Display recipient type
	Console.WriteLine("Recipient Type : " + rcp.RecipientType);
}