Парсинг файлов сообщений Outlook

Aspose.Email для Java предоставляет класс MapiMessage , который используется для открытия и парсинга файла MSG. Поскольку в файле MSG может быть много получателей, класс MapiMessage выставляет метод getRecipients() , который возвращает MapiRecipientCollection , представляющий собой коллекцию объектов MapiRecipient. Объект MapiRecipient дополнительно предлагает методы для работы с атрибутами получателя.

Следующая последовательность шагов служит этой цели:

  1. Создайте экземпляр класса MapiMessage для загрузки файла MSG с помощью статического метода Load.
  2. Отобразите имя отправителя, тему и текст сообщения из файла MSG, используя методы getSenderName(), getSubject() и getBody() .
  3. Вызовите метод getRecipients() , предоставленный классом MapiRecipient, чтобы получить ссылку на коллекцию объектов MapiRecipient, связанных с файлом MSG.
  4. Переберите коллекцию MapiRecipientCollection , чтобы отобразить содержимое для каждого объекта MapiRecipient через его публичные методы.
// Путь к каталогу ресурсов. String dataDir = Utils.getSharedDataDir(ParsingOutlookMessageFiles.class) + "outlook/"; //Создание файла MSG для загрузки файла MSG с диска MapiMessage outlookMessageFile = MapiMessage.fromFile(dataDir + "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()); } 

Получение типа элемента MAPI-сообщения

Aspose.Email предлагает перечисление MapiItemType , которое представляет собой тип элемента. Оно может быть использовано для преобразования сообщения в объект соответствующего класса, производного от интерфейса IMapiMessageItem. Это позволяет пользователям не проверять значение свойства MessageClass перед преобразованием сообщения.

Следующий пример кода демонстрирует, как перебрать сообщения в папке и преобразовать каждое MAPI-сообщение в соответствующий тип элемента MAPI, в зависимости от типа сообщения:

for (MessageInfo messageInfo : folder.enumerateMessages()) { MapiMessage msg = pst.extractMessage(messageInfo); switch (msg.getSupportedType()) { // Неподдерживаемый тип. MapiMessage не может быть преобразовано в соответствующий тип элемента.  // Просто используйте в формате MSG.  case MapiItemType.None: break; // Электронное сообщение. Преобразование не требуется.  case MapiItemType.Message: break; // Элемент контакта. Может быть преобразовано в MapiContact.  case MapiItemType.Contact: MapiContact contact = (MapiContact) msg.toMapiMessageItem(); break; // Элемент календаря. Может быть преобразовано в MapiCalendar.  case MapiItemType.Calendar: MapiCalendar calendar = (MapiCalendar) msg.toMapiMessageItem(); break; // Рассылка. Может быть преобразовано в MapiDistributionList.  case MapiItemType.DistList: MapiDistributionList dl = (MapiDistributionList) msg.toMapiMessageItem(); break; // Запись журнала. Может быть преобразовано в MapiJournal.  case MapiItemType.Journal: MapiJournal journal = (MapiJournal) msg.toMapiMessageItem(); break; // Заметка. Может быть преобразовано в MapiNote.  case MapiItemType.Note: MapiNote note = (MapiNote) msg.toMapiMessageItem(); break; // Задача. Может быть преобразовано в MapiTask.  case MapiItemType.Task: MapiTask task = (MapiTask) msg.toMapiMessageItem(); break; } }