package com.aspose.email.examples.outlook.pst;
import com.aspose.email.FolderInfo;
import com.aspose.email.FolderInfoCollection;
import com.aspose.email.FolderKind;
import com.aspose.email.MessageInfo;
import com.aspose.email.PersonalStorage;
import com.aspose.email.examples.Utils;
import com.aspose.email.system.IDisposable;
public class ReadOutlookPSTFile {
public static void main(String[] args) {
// The path to the resource directory.
String dataDir = Utils.getSharedDataDir(ReadOutlookPSTFile.class) + "outlook/";
loadAPSTFile(dataDir);
displayFolderAndMessageInformationForPSTFile(dataDir);
parseSearchableFolders(dataDir);
retrieParentFolderInformationFromMessageInfo(dataDir);
}
public static void loadAPSTFile(String dataDir) {
// Load the Outlook PST file
PersonalStorage pst = PersonalStorage.fromFile(dataDir + "PersonalStorage.pst");
}
public static void displayFolderAndMessageInformationForPSTFile(String dataDir) {
// Load the Outlook PST file
PersonalStorage pst = PersonalStorage.fromFile(dataDir + "PersonalStorage.pst");
// Get the folders information
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();
// Browse through each folder to display folder name and number of messages
for (int i = 0; i < folderInfoCollection.size(); i++) {
FolderInfo folderInfo = (FolderInfo) folderInfoCollection.get_Item(i);
System.out.println("FolderId: " + folderInfo.getEntryIdString());
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("Total items: " + folderInfo.getContentCount());
System.out.println("Total unread items: " + folderInfo.getContentUnreadCount());
System.out.println("-----------------------------------");
}
}
public static void parseSearchableFolders(String dataDir) {
final PersonalStorage pst = PersonalStorage.fromFile(dataDir + "PersonalStorage.pst");
FolderInfo finder = pst.getFolderById("AAAAAOu+OWXNsrFFkK4GgGGmk0yCgAAA");
FolderInfoCollection coll = finder.getSubFolders(FolderKind.Search);
System.out.println(coll.size()); //This should print 17
coll = finder.getSubFolders(FolderKind.Normal);
System.out.println(coll.size()); //This should print 0
coll = finder.getSubFolders(FolderKind.Search | FolderKind.Normal);
System.out.println(coll.size()); //This should print 17
}
public static void retrieParentFolderInformationFromMessageInfo(String dataDir) {
final PersonalStorage[] pst = { PersonalStorage.fromFile(dataDir + "PersonalStorage.pst") };
try {
for (FolderInfo folder : (Iterable<FolderInfo>) pst[0].getRootFolder().getSubFolders()) {
for (MessageInfo msg : (Iterable<MessageInfo>) folder.enumerateMessages()) {
FolderInfo fi = pst[0].getParentFolder(msg.getEntryId());
}
}
} finally {
if (pst[0] != null)
((IDisposable) pst[0]).dispose();
}
}
}