
MSG — это формат файла электронной почты, используемый MS Outlook. Это элемент Outlook, который позволяет хранить электронные письма, контакты, сообщения, задачи, встречи и т. д. В некоторых случаях нам может потребоваться прочитать файлы Outlook MSG в приложениях Java и извлечь такие свойства, как тема, получатели, отправитель, тело и т. д. В этой статье мы узнаем, как читать файл Outlook MSG с помощью Java.
В этой статье должны быть раскрыты следующие темы:
- Java API для чтения файла Outlook MSG
- Анализ и чтение файла Outlook MSG
- Получить вложения из файла MSG
- Чтение встроенного сообщения из вложения
Java API для чтения файла Outlook MSG
Для чтения файла Outlook MSG мы будем использовать API Aspose.Email для Java. Это позволяет легко создавать, отправлять, читать и управлять сообщениями электронной почты. Он также поддерживает синтаксический анализ файлов Outlook MSG и предоставляет их содержимое в объектах Java. Пожалуйста, либо скачайте JAR API, либо просто добавьте следующую конфигурацию pom.xml в приложение Java на основе Maven.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-email</artifactId>
<version>22.2</version>
<classifier>jdk16</classifier>
</dependency>
Анализ и чтение файла Outlook MSG с использованием Java
Мы можем разобрать и прочитать файл Outlook MSG, выполнив следующие действия:
- Загрузите файл MSG с помощью метода MapiMessage.load().
- Прочитайте такие свойства, как SenderName, Subject, Body, Recipients из загруженного сообщения MSG.
В следующем примере кода показано, как читать файл Outlook MSG с помощью Java.
// В этом примере кода показано, как читать файл MSG.
// Загрузите файл MSG с диска
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\message.msg");
// Показать имя отправителя
System.out.println("Sender Name : " + outlookMessageFile.getSenderName());
// Показать тему
System.out.println("Subject : " + outlookMessageFile.getSubject());
// Показать тело
System.out.println("Body : " + outlookMessageFile.getBody());
// Показать информацию о получателе
System.out.println("Recipients : \n");
// Перебрать коллекцию получателей, связанную с объектом MapiMessage.
for (int i = 0; i < outlookMessageFile.getRecipients().size(); i++) {
// Установите ссылку на объект MapiRecipient
MapiRecipient rcp = (MapiRecipient) outlookMessageFile.getRecipients().get_Item(i);
// Показать адрес электронной почты получателя
System.out.println("Email : " + rcp.getEmailAddress());
// Показать имя получателя
System.out.println("Name : " + rcp.getDisplayName());
// Показать тип получателя
System.out.println("Recipient Type : " + rcp.getRecipientType());
}

Разберите и прочитайте файл Outlook MSG с помощью Java.
Получить вложения из файла MSG с помощью Java
Мы также можем сохранить вложения из файла Outlook MSG, выполнив следующие действия:
- Загрузите файл MSG с помощью метода MapiMessage.load().
- Прокрутите коллекцию вложений, связанную с объектом MapiMessage.
- Сохраните каждое вложение на диск с помощью метода save().
В следующем примере кода показано, как сохранить вложения из файла Outlook MSG с помощью Java.
// В этом примере кода показано, как сохранить вложения из файла MSG.
// Загрузите файл MSG с диска
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\WithEmbeddedMsg.msg");
// Перебрать коллекцию вложений, связанную с объектом MapiMessage.
for (int i = 0; i < outlookMessageFile.getAttachments().size(); i++) {
// Установить ссылку на объект MapiAttachment
MapiAttachment outlookMessageAttachment = (MapiAttachment) outlookMessageFile.getAttachments().get_Item(i);
// Показать тип вложения
System.out.println("Att Type : " + outlookMessageAttachment.getMimeTag());
// Показать имя прикрепленного файла
System.out.println("File Name : " + outlookMessageAttachment.getLongFileName());
// Сохранить вложение на диск
outlookMessageAttachment.save("D:\\Files\\Email\\" + outlookMessageAttachment.getDisplayName());
}

Получить вложения из файла MSG с помощью Java.
Чтение встроенного сообщения из вложения
Мы также можем прочитать сообщения электронной почты, встроенные во вложение Outlook MSG, выполнив следующие действия:
- Загрузите файл MSG с помощью метода MapiMessage.load().
- Получите прикрепленное сообщение как объект MapiMessage.
- Показать свойства сообщения.
В следующем примере кода показано, как читать встроенное сообщение как вложение с помощью Java.
// В этом примере кода показано, как читать встроенное сообщение, вложенное в MSG.
// Загрузите файл MSG
MapiMessage mapi = MapiMessage.load(dataDir + "EmbededMessageAsAttachment.msg");
// Показать общее количество вложений
System.out.println("Total attachments : " + mapi.getAttachments().size());
// Прочитать вложение как MapiMessage
MapiMessage emb = mapi.getAttachments().get_Item(0).getObjectData().toMapiMessage();
// Показать имя отправителя
System.out.println("Sender Name : " + emb.getSenderName());
// Показать тему
System.out.println("Subject : " + emb.getSubject());
// Показать тело
System.out.println("Body : " + emb.getBody());
// Показать информацию о получателе
System.out.println("Recipients :");
// Перебрать коллекцию получателей, связанную с объектом MapiMessage.
for (int i = 0; i < emb.getRecipients().size(); i++) {
// Установите ссылку на объект MapiRecipient
MapiRecipient rcp = (MapiRecipient) emb.getRecipients().get_Item(i);
// Показать адрес электронной почты получателя
System.out.println("\t Email : " + rcp.getEmailAddress());
// Показать имя получателя
System.out.println("\t Name : " + rcp.getDisplayName());
// Показать тип получателя
System.out.println("\t Recipient Type : " + rcp.getRecipientType());
}
Получить бесплатную лицензию
Попробуйте API без ознакомительных ограничений, запросив бесплатную временную лицензию.
Вывод
В этой статье мы узнали, как программно читать содержимое файла Outlook MSG с помощью Java. Более того, мы увидели, как читать и извлекать вложения из файла MSG. Кроме того, вы можете узнать больше об Aspose.Email для Java API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.