Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Exchange Server上搜索特定文件夹_C#_Api_Exchange Server_Exchange Server 2010 - Fatal编程技术网

C# 在Exchange Server上搜索特定文件夹

C# 在Exchange Server上搜索特定文件夹,c#,api,exchange-server,exchange-server-2010,C#,Api,Exchange Server,Exchange Server 2010,我有一段代码,当前可以从“常规收件箱”文件夹读取exchange服务器上的所有电子邮件。下面一行是访问该特定文件夹的内容 FindItemsResults<Item> findResults = exchange.FindItems(WellKnownFolderName.Inbox, new ItemView(250)); 问题: 是否可以修改此代码,以便我可以搜索用户创建的文件夹而不是普通收件箱?例如,我创建了一个名为testfolder的文件夹,我希望能够在这里阅读所有电子

我有一段代码,当前可以从“常规收件箱”文件夹读取exchange服务器上的所有电子邮件。下面一行是访问该特定文件夹的内容

 FindItemsResults<Item> findResults = exchange.FindItems(WellKnownFolderName.Inbox, new ItemView(250));
问题: 是否可以修改此代码,以便我可以搜索用户创建的文件夹而不是普通收件箱?例如,我创建了一个名为testfolder的文件夹,我希望能够在这里阅读所有电子邮件

我已尝试添加搜索筛选器,但目前未返回任何结果:

 SearchFilter searchFilter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Test Folder");

 FindItemsResults<Item> findResults = exchange.FindItems(WellKnownFolderName.Inbox, searchFilter, new ItemView(250));

您需要首先找到用户创建的相关文件夹的FolderId,然后可以使用FolderId在服务类的FindItem方法中使用它,或者在文件夹本身上使用FindItem方法。例如,要查找用户创建的文件夹,可以将其转换为路径并搜索该路径

        internal static Folder GetFolderFromPath(ExchangeService service,String MailboxName,String FolderPath)
{
    FolderId folderid = new  FolderId(WellKnownFolderName.MsgFolderRoot,MailboxName);   
    Folder tfTargetFolder = Folder.Bind(service,folderid);
    PropertySet psPropset = new PropertySet(BasePropertySet.FirstClassProperties);
    String[] fldArray = FolderPath.Split('\\'); 
    for (Int32 lint = 1; lint < fldArray.Length; lint++) { 
        FolderView fvFolderView = new FolderView(1);
        fvFolderView.PropertySet = psPropset;
        SearchFilter  SfSearchFilter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName,fldArray[lint]); 
        FindFoldersResults findFolderResults = service.FindFolders(tfTargetFolder.Id,SfSearchFilter,fvFolderView); 
        if (findFolderResults.TotalCount > 0){ 
        foreach(Folder folder in findFolderResults.Folders){ 
            tfTargetFolder = folder;                
            } 
        } 
        else{ 
            tfTargetFolder = null;  
            break;  
        }     
    }
    if (tfTargetFolder != null)
    {
        return tfTargetFolder;
    }
    else
    {
        throw new Exception("Folder Not found");
    }
}
因此,如果文件夹在收件箱中,您将使用


GetFolderFromPathservice,mailbox@domaim.com,\Inbox\folder,然后返回该文件夹。

非常感谢,这将帮助应用程序更高效地运行