Разбор файлов сообщений Outlook

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

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

  1. Создать экземпляр MapiMessage класс для загрузки файла MSG из Load статический метод.
  2. Отобразить имя отправителя, тему и тело из файла MSG с помощью getSenderName(), getSubject() и getBody() методов.
  3. Вызвать getRecipients() метод, предоставляемый Для сохранения вложений в файле MSG на диск с оригинальными именем и расширением: класс для получения ссылки на коллекцию Для сохранения вложений в файле MSG на диск с оригинальными именем и расширением: метод для получения ссылки на коллекцию
  4. Переберите MapiRecipientCollection коллекцию для отображения содержимого каждого Для сохранения вложений в файле MSG на диск с оригинальными именем и расширением: для отображения содержимого, относящегося к каждому
// The path to the resource directory.
String dataDir = Utils.getSharedDataDir(ParsingOutlookMessageFiles.class) + "outlook/";

//Instantiate an MSG file to load an MSG file from disk
MapiMessage outlookMessageFile = MapiMessage.fromFile(dataDir + "message.msg");
//Display sender's name
System.out.println("Sender Name : " + outlookMessageFile.getSenderName());
//Display Subject
System.out.println("Subject : " + outlookMessageFile.getSubject());
//Display Body
System.out.println("Body : " + outlookMessageFile.getBody());
//Display Recipient's info
System.out.println("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
for (int i = 0; i < outlookMessageFile.getRecipients().size(); i++) {
	//Set a reference to the MapiRecipient object
	MapiRecipient rcp = (MapiRecipient) outlookMessageFile.getRecipients().get_Item(i);
	//Display recipient email address
	System.out.println("Email : " + rcp.getEmailAddress());
	//Display recipient name
	System.out.println("Name : " + rcp.getDisplayName());
	//Display recipient type
	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()) {
        // Non-supported type. MapiMessage cannot be converted to an appropriate item type.
        // Just use in MSG format.
        case MapiItemType.None:
            break;
        // An email message. Conversion isn't required.
        case MapiItemType.Message:
            break;
        // A contact item. Can be converted to MapiContact.
        case MapiItemType.Contact:
            MapiContact contact = (MapiContact) msg.toMapiMessageItem();
            break;
        // A calendar item. Can be converted to MapiCalendar.
        case MapiItemType.Calendar:
            MapiCalendar calendar = (MapiCalendar) msg.toMapiMessageItem();
            break;
        // A distribution list. Can be converted to MapiDistributionList.
        case MapiItemType.DistList:
            MapiDistributionList dl = (MapiDistributionList) msg.toMapiMessageItem();
            break;
        // A Journal entry. Can be converted to MapiJournal.
        case MapiItemType.Journal:
            MapiJournal journal = (MapiJournal) msg.toMapiMessageItem();
            break;
        // A StickyNote. Can be converted to MapiNote.
        case MapiItemType.Note:
            MapiNote note = (MapiNote) msg.toMapiMessageItem();
            break;
        // A Task item. Can be converted to MapiTask.
        case MapiItemType.Task:
            MapiTask task = (MapiTask) msg.toMapiMessageItem();
            break;
    }
}