简体   繁体   中英

Get emails from custom and sent mail folders in c# using Exchange Web Services

I'm trying to retrieve emails from multiple folders including Inbox, Sent, and some custom folders. I'm first filtering the folders so I can loop over them, calling FindItems to return their contents. The code below works without searchFilter4 (line 10), but with it I get this unhelpful error:

'Microsoft.Exchange.WebServices.Data.ServiceResponseException' in Microsoft.Exchange.WebServices.dll

My code:

// Folder name filter for Inbox, Completed, Inprogress, and Sent folders:
SearchFilter searchFilter1 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Inbox");
SearchFilter searchFilter2 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Completed");
SearchFilter searchFilter3 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "In Progress");
SearchFilter searchFilter4 = new SearchFilter.IsEqualTo(, WellKnownFolderName.SentItems);
SearchFilter.SearchFilterCollection searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.Or);
searchFilterCollection.Add(searchFilter1);
searchFilterCollection.Add(searchFilter2);
searchFilterCollection.Add(searchFilter3);
searchFilterCollection.Add(searchFilter4);

// Find folders:
FindFoldersResults findResults = service.FindFolders(
        WellKnownFolderName.MsgFolderRoot, searchFilterCollection,
        new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep }
);

I figured it out while writing my question...

All I needed to do was add the folder to my findeResults after calling FindFolders with this line:

findResults.Folders.Add(Folder.Bind(service, WellKnownFolderName.SentItems));

My new code:

// Folder name filter for Inbox, Completed, Inprogress, and Sent folders:
SearchFilter searchFilter1 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Inbox");
SearchFilter searchFilter2 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Completed");
SearchFilter searchFilter3 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "In Progress");
SearchFilter.SearchFilterCollection searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.Or);
searchFilterCollection.Add(searchFilter1);
searchFilterCollection.Add(searchFilter2);
searchFilterCollection.Add(searchFilter3);

// Find folders:
FindFoldersResults findResults = service.FindFolders(
        WellKnownFolderName.MsgFolderRoot, searchFilterCollection,
        new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep }
);

// Add SentItems to the findResults:
findResults.Folders.Add(Folder.Bind(service, WellKnownFolderName.SentItems));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM