我使用Microsoft的Exchange Web Services(EWS)。
我的代码是这样的:
ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
等
我使用此代码获取文件夹:
Folder rootfolder = Folder.Bind(server, WellKnownFolderName.MsgFolderRoot);
Exchange Server上我的文件夹的结构是:
Inbox
|
|
Folder1
|
|_Sub_Folder1
| |
| |_Sub_Sub_Folder1
| |
| |_Sub_Sub_Sub_Folder1
|
|_Sub_Folder2
| |
| |_Sub_Sub_Folder1
|
Folder2
|
|_Sub_Folder1
|
|_Sub_Folder2
当我使用上面提到的功能时,我只收到主要文件夹:
Inbox
,Folder1
和Folder2
。
我希望收到SubFolders
...然后我想从SubFolders
获取商品。
例如:
Folder1
|
|_Sub_Folder1
| |
| |_Sub_Sub_Folder1
| |
| |_Sub_Sub_Sub_Folder1 -> I want to get these items
你能帮助我并提供一些代码示例吗?我应该使用什么功能?
我试图使用:
FindFoldersResults findFoldersResults2 = folder.FindFolders(new FolderView(100));
但是,当我收到例如文件夹:Inbox
,Folder1
,Folder2
并且我看了ChildFolderCount
时,我没有收到subfolders
个。 2
- >我收到了0
点数。
有什么问题?我需要从subfolders
阅读这些项目。
答案 0 :(得分:0)
我认为你有2个问题。 第一个:“如何获取子文件夹”,第二个“为什么ChildFolderCoun = 0”。
第二个问题的答案非常简单。您必须调用folder.Load()并提供包含FolderSchema.ChildFolderCount属性定义的属性集。
您的第一个问题的答案是,您必须在重复循环中为每个文件夹调用FindFolders()。至少我没有找到一个参数或类似的东西告诉FindFolders-Method包含所有子文件夹。
希望能帮到你......
答案 1 :(得分:0)
您正在寻找验证文件夹是否存在的方法。您可以使用以下方法。它递归搜索每个子文件夹。更改FolderView的Traversal属性以进行深度/浅层搜索。
FolderId subfolderInfo;
// Call Method
bool folderExist = isFolderExist(exchange, "Folder1", out subfolderInfo);
//Implementation
private bool isFolderExist(ExchangeService exchange, string subFolder, out FolderId subfolderInfo)
{
try
{
FolderView view = new FolderView(100);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.PropertySet.Add(FolderSchema.DisplayName);
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = exchange.FindFolders(WellKnownFolderName.Root, view);
foreach (Folder folder in findFolderResults)
{
if (folder.DisplayName == subFolder)
{
subfolderInfo = folder.Id;
return true;
}
}
}
catch (Exception Ex)
{
...
}
subfolderInfo = null;
return false;
}