1
我需要找到文件夾名稱「Archived」,它位於父級別,而不是SUBFOLDER,如果文件夾「Archived」是子文件夾,我不希望它返回在結果集中。這是我編碼的內容,但是這也會返回子文件夾。Exchange Web Service搜索自定義文件夾名稱
HashMap<String, FolderId> folderIdList = new HashMap<String, FolderId>();
FolderId readFromId = null; //Folder to read emails from- Inbox
FolderId moveToId = null; //Folder to move emails to after processing- Archived
FolderView view = new FolderView(Integer.MAX_VALUE);
view.setPropertySet(new PropertySet(BasePropertySet.IdOnly));
view.getPropertySet().add(FolderSchema.DisplayName);
view.setTraversal(FolderTraversal.Deep);
try {
FindFoldersResults findFolderResults = service.findFolders(new FolderId(WellKnownFolderName.MsgFolderRoot, userMailbox) ,view);
//find specific folder
for (Folder folder : findFolderResults) {
// look for the desired folder name
System.out.println(folder.getDisplayName());
if (folder.getDisplayName().equalsIgnoreCase("Inbox")) {
//get the id
readFromId = folder.getId();
}
//add the folder id to map
folderIdList.put(UtilConstants.READ_FROM, folder.getId());
} else if (folder.getDisplayName().equalsIgnoreCase("Archived")) {
//get the id
moveToId = folder.getId();
}
//add the folder id to map
folderIdList.put(UtilConstants.MOVE_TO, folder.getId());
}
}
} catch (Exception e) {
log.error("Error while getting the folder id's for folders "+readFrom+", "+moveTo+""+e.getMessage());
throw e;
}
return folderIdList;
感謝格倫的文件夾,我想你的解決方案,我得到1分的結果爲「存檔」,甚至儘管我有3個「存檔」文件夾,2個是子文件夾。現在有一個屬性,我可以檢查一個文件夾,我回來的結果是隻有一個父文件夾。 – Lucky
我編輯了我的問題,添加了文件夾ID,子文件夾計數和父文件夾ID的圖片,這是所有文件夾通用的父文件夾ID,我在想如果我可以將此父文件夾ID與歸檔文件夾父母文件夾ID,如果存檔是一個子文件夾,父文件夾ID將不匹配。還是有我可以檢查的另一個屬性。 謝謝。 – Lucky
如果你想得到的文件夾在根目錄層,那麼只需使用淺層遍歷就是我發佈的最好的方法。不能在同一文件夾級別使用同一名稱的兩個文件夾,例如,可以在MsgfolderRoot級別存檔兩個文件夾名稱。這裏沒有常見的父FolderId,因爲郵箱文件夾是Treeview的層次結構。父文件夾只在您想要獲取的文件夾是其他文件的子文件夾時才起作用,例如收件箱或用戶創建的文件夾,但聽起來不像您。 –