Загрузка, просмотр и анализ файла MSG

В этом разделе описывается, как загрузить файл сообщений Microsoft Outlook (*.msg). 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 property.

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