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

Chủ đề này giải thích cách tải tệp tin Nhắn Microsoft Outlook (*.msg). MapiMessage lớp được sử dụng để tải các tệp MSG và cung cấp một số hàm tải tĩnh cho các kịch bản khác nhau. Đoạn mã sau đây cho bạn thấy 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.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

// Create an instance of MapiMessage from file
MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");

// Get subject
System.out.println("Subject:" + msg.getSubject());

// Get from address
System.out.println("From:" + msg.getSenderEmailAddress());

// Get body
System.out.println("Body" + msg.getBody());

// Get recipients information
System.out.println("Recipient: " + msg.getRecipients());

// Get attachments
for (MapiAttachment att : msg.getAttachments())
{
    System.out.println("Attachment Name: " + att.getFileName());
    System.out.println("Attachment Display Name: " + att.getDisplayName());
}

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

MailMessage 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.

MsgLoadOptions msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.setPreserveEmbeddedMessageFormat(true);
MailMessage msg = MailMessage.load(stream, msgLoadOptions);

Tải từ Luồng

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of MapiMessage from file
try (FileInputStream stream = new FileInputStream(dataDir + "message.msg"))
{
    // Create an instance of MapiMessage from file
    MapiMessage msg = MapiMessage.fromStream(stream);

    // Get subject
    System.out.println("Subject:" + msg.getSubject());

    // Get from address
    System.out.println("From:" + msg.getSenderEmailAddress());

    // Get body
    System.out.println("Body" + msg.getBody());

}

Chuyển đổi EML sang MSG giữ Đị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.setPreserveEmbeddedMessageFormat để 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.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String dataDir = RunExamples.getDataDir_Email();

MailMessage eml = MailMessage.load(dataDir + "sample.eml", new EmlLoadOptions());

MapiConversionOptions options = MapiConversionOptions.getUnicodeFormat();

//Preserve Embedded Message Format
options.setPreserveEmbeddedMessageFormat(true);

//Convert EML to MSG with Options
MapiMessage msg = MapiMessage.fromMailMessage(eml, options);