我从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
ex的数量。 2
->我收到计数0
.
怎么了?我需要从subfolders
阅读这些项目.
我想你有2个问题。第一个:"如何获取子文件夹"和第二个"为什么ChildFolderCoun = 0"。
第二个问题的答案非常简单。您必须调用文件夹。Load(( 并提供一个包含 FolderSchema.ChildFolderCount 属性定义的属性集。
第一个问题的答案是,您必须为回避循环中的每个文件夹调用 FindFolder((。至少我没有找到一个参数或类似的东西来告诉 FindFolder-Method 包含所有子文件夹。
希望对您有所帮助...
您正在寻找验证文件夹是否存在的方法。您可以使用以下方法。它以递归方式搜索每个子文件夹。 更改文件夹视图的遍历属性以进行深层/浅层搜索。
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;
}