EWS-通过全名获取文件夹

问题描述 投票:0回答:1

我设法使用从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", "\\");

}

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

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 });
    }
}

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

谢谢您,一月

c# exchangewebservices
1个回答
1
投票

不,您不能对该属性创建限制,因为它是计算所得的属性。我建议您从[]开始搜索

WellKnownFolderName.MsgFolderRoot

根目录将包含所有对用户不可见的Non_IPM_Subtree文件夹,因此只会降低查询效率。

如果将该属性添加到folderView的PropertySet中,则可以只过滤返回的结果以匹配您搜索的路径。使用IsEqual SearchFilter和仅确切的文件夹DisplayName也可以加快搜索速度。当您根据要查找的路径过滤结果集时,您应该就可以摆脱任何提取文件夹名称(例如,相同名称的不同路径)。

个人而言,当我需要执行此操作时,我将路径分开,并从父文件夹进行浅遍历。它的请求更多,但我从未对该方法的可靠性和速度存在任何问题,它也适用于上述方法将失败的公用文件夹,例如Exchange Web Service FolderId for a folder created by user

© www.soinside.com 2019 - 2024. All rights reserved.