Завантаження, перегляд та розбір файлу MSG

У цьому розділі пояснюється, як завантажити файл повідомлення Microsoft Outlook (*.msg). The MapiMessage клас використовується для завантаження файлів MSG і надає кілька статичних функцій завантаження для різних сценаріїв. Нижче наведено фрагмент коду, який показує, як завантажити файли MSG з файлу або з потоку.

Завантаження файлів MSG

Нижче наведено фрагмент коду, який показує, як завантажити файли 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());
}

Нижче наведено приклад коду, який показує, як використати MailMessage для завантаження повідомлення у форматі MSG.

MailMessage eml = MailMessage.load("message.msg");

Слід зауважити, що результуюче повідомлення конвертується у формат EML, включаючи вбудовані вкладення повідомлень. Не використовуйте цей метод завантаження, якщо ви хочете зберегти деякі специфічні властивості формату msg оригінального повідомлення.

Щоб зберегти оригінальний формат вбудованих вкладень повідомлень, використайте MsgLoadOptions.PreserveEmbeddedMessageFormat властивість.

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

Завантаження з потоку

Нижче наведено фрагмент коду, який показує, як завантажити файл із потоку.

// 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());

}

Конвертування EML у MSG з збереженням формату вбудованих EML

Файли EML можна завантажити в MapiMessage клас шляхом створення MailMessage об’єкт і передаючи його до MapiMessage.fromMailMessage метод. Якщо файл EML містить вбудовані файли EML, використовуйте MapiConversionOptions.setPreserveEmbeddedMessageFormat для збереження формату вбудованих файлів EML. Нижче наведено фрагмент коду, який показує, як завантажити файли EML у MapiMessage при збереженні формату вбудованих файлів EML.

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