交换Web服务文件夹id为不知名的文件夹名称

本文关键字:文件夹 不知名 id Web 服务 交换 | 更新日期: 2023-09-27 18:12:44

我在Exchange邮箱中有一个文件夹,它是根(不是Inbox)的子文件夹。

如何使用EWS管理的API获取此类文件夹的ID ?

我发现的唯一例子是那些与WellKnownFolderNames有关的。

交换Web服务文件夹id为不知名的文件夹名称

您可以使用FindFolders方法找到所有文件夹。使用WellKnownFolderName.Root显示收件箱中的所有文件夹。您必须创建一个FolderView并添加您想要看到的属性(例如IDDisplayName)。将遍历设置为Deep以查找所有文件夹。在我的例子中,我正在寻找具有DisplayName"Test"的文件夹。

// set Server
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);
    }
}

有点晚了,但是下面是我用来找到我的文件夹的方法:

var view = new FolderView(1);
view.Traversal = FolderTraversal.Deep;
var filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Rejected");
var results = Service.FindFolders(WellKnownFolderName.Root, filter, view);
if (results.TotalCount < 1)
    throw new Exception("Cannot find Rejected folder");
if (results.TotalCount > 1)
    throw new Exception("Multiple Rejected folders");
Rejected = Folder.Bind(Service, results.Folders.Single().Id);

Edit:显然我的代码不能在嵌套的层次结构上工作。我按照cookiemonster的建议添加了一行

7 -ply的答案是有效的,但可能导致不希望的结果。

假设你有这样的结构:

Root
--Folder A
----Test
--Folder B
----Test

他提供的代码将返回两个测试文件夹。

如果您知道路径(如文件夹B/Test),您可以迭代地获得文件夹路径。

请参阅此链接中的SetFolderHomePage方法:http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx.