تجزیه فایل‌های پیام 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 شیء از طریق متدهای عمومی آن.
// 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 enum که نوع یک مورد را نمایش می‌دهد. می‌تواند برای تبدیل پیام به شی‌ای از کلاس متناظر مشتق‌شده از 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;
    }
}