EWS - 按全名获取文件夹

EWS - Get folder by its full name

我使用从 here:

复制的代码成功获取了文件夹的全名
private static string GetFullFolderName(Microsoft.Exchange.WebServices.Data.ExchangeService EServ, string FolderID)
{
    Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition folderPathExtendedProp = new Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(26293, Microsoft.Exchange.WebServices.Data.MapiPropertyType.String);
    Microsoft.Exchange.WebServices.Data.PropertySet folderPropSet = new Microsoft.Exchange.WebServices.Data.PropertySet(Microsoft.Exchange.WebServices.Data.BasePropertySet.FirstClassProperties) { folderPathExtendedProp };
    Microsoft.Exchange.WebServices.Data.Folder folder = Microsoft.Exchange.WebServices.Data.Folder.Bind(EServ, FolderID, folderPropSet);

string path = null;
folder.TryGetProperty(folderPathExtendedProp, out path);

return path?.Replace("\ufffe", "\");

}

现在,我想按全名搜索文件夹。我写了一个函数,但这似乎只是为了寻找显示名称。

public static Microsoft.Exchange.WebServices.Data.FindFoldersResults GetFolders(Microsoft.Exchange.WebServices.Data.ExchangeService EServ, string NamePart = "")
{
    if (NamePart.Trim().Length > 0) { 
        Microsoft.Exchange.WebServices.Data.SearchFilter.ContainsSubstring SF = new Microsoft.Exchange.WebServices.Data.SearchFilter.ContainsSubstring(Microsoft.Exchange.WebServices.Data.FolderSchema.DisplayName, NamePart);
        return EServ.FindFolders(Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Root, SF, new Microsoft.Exchange.WebServices.Data.FolderView(System.Int32.MaxValue) { Traversal = Microsoft.Exchange.WebServices.Data.FolderTraversal.Deep });
    }else{
        return EServ.FindFolders(Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Root, new Microsoft.Exchange.WebServices.Data.FolderView(System.Int32.MaxValue) { Traversal = Microsoft.Exchange.WebServices.Data.FolderTraversal.Deep });
    }
}

是否可以使用文件夹的全名而不是显示名称作为搜索条件?

谢谢你和问候, 一月

不,您不能对 属性 创建限制,因为它是计算得出的 属性。我建议您从

开始搜索
WellKnownFolderName.MsgFolderRoot

Root 将包括用户不可见的所有 Non_IPM_Subtree 文件夹,因此它只会降低您的查询效率。

如果您将 属性 添加到 folderView 的 PropertySet,您就可以过滤返回的结果以匹配您搜索的路径。使用 IsEqual SearchFilter 和确切的文件夹显示名称也将加快您的搜索速度。当您根据您寻找的路径过滤结果集时,您应该能够去掉任何提取文件夹名称(例如相同名称的不同路径)。

就个人而言,当我需要这样做时,我将路径分开并从父文件夹进行浅层遍历。它的请求更多,但我从来没有遇到过该方法的可靠性和速度的任何问题,它也适用于上述方法失败的 Public 文件夹,例如 Exchange Web Service FolderId for a folder created by user.