【发布时间】:2017-02-11 10:37:54
【问题描述】:
我在 Exchange 邮箱中有一个文件夹,它是根的子级,由用户创建。
如何使用 EWS 托管 API 找到这样的文件夹?
我尝试使用深度遍历,但找不到文件夹。
编辑:这是我用来获取用户创建的文件夹的代码:
ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
server.UseDefaultCredentials = true;
string configUrl = @"https://yourServerAddress.asmx";
server.Url = new Uri(configUrl);
// set View
FolderView view = new FolderView(100);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.PropertySet.Add(FolderSchema.DisplayName);
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = server.FindFolders(WellKnownFolderName.Root, view);
// find specific folder
foreach (Folder f in findFolderResults)
{
// show FolderId of the folder "test"
if (f.DisplayName == "Test")
{
Console.WriteLine(f.Id);
}
}
【问题讨论】:
-
你应该从 MsgFolderRoot 而不是 Root 开始你的枚举,因为你还没有分页你枚举的结果只会返回邮箱中的前 100 个文件夹,一个典型的邮箱可以包含 1000+ 个文件夹,所以它如果你想枚举你的分页结果,这很重要。就像我发布的示例一样,使用 Searchfilter 过滤结果很容易。
-
我的枚举只为 MsgFolderRoot 返回 25 个文件夹,为 Root 返回 45 个文件夹,两者都不包括用户创建的文件夹。我会尝试你的建议。