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的层次结构。父文件夹只在您想要获取的文件夹是其他文件的子文件夹时才起作用,例如收件箱或用户创建的文件夹,但听起来不像您。 –