How to retrieve all items from \"public folders\" and its \"sub-folders\" in exchange server2010 uisng managed API???
rootfolder = Folder.Bind(service,WellKn
List completeListOfFolderIds = new List();
GetAllFolders(service, completeListOfFolderIds);
foreach (Folder folder in completeListOfFolderIds)
{
List- results = GetItems(service, folder);
}
public void GetAllFolders(ExchangeService service, List
completeListOfFolderIds)
{
ExtendedPropertyDefinition isHiddenProp = new ExtendedPropertyDefinition(0x10f4, MapiPropertyType.Boolean);
FolderView folderView = new FolderView(int.MaxValue);
folderView.PropertySet = new PropertySet(isHiddenProp,FolderSchema.DisplayName, FolderSchema.Id, FolderSchema.ChildFolderCount, FolderSchema.TotalCount, FolderSchema.ParentFolderId, FolderSchema.WellKnownFolderName);
List searchFilterCollection = new List();
searchFilterCollection.Add(new SearchFilter.IsEqualTo(isHiddenProp, false));
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, searchFilterCollection.ToArray());
Folder rootfolder = Folder.Bind(service, WellKnownFolderName.MsgFolderRoot);
// Indicate a Traversal value of Deep, so that all subfolders are retrieved.
folderView.Traversal = FolderTraversal.Deep;
rootfolder.Load();
//FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.MsgFolderRoot, folderView);
FindFoldersResults findFolderResults = rootfolder.FindFolders(searchFilter, folderView);
foreach (Folder folder in findFolderResults)
{
completeListOfFolderIds.Add(folder);
//List- results = GetItems(service, folder);
FindAllSubFolders(service, folder.Id, completeListOfFolderIds);
}
}
private void FindAllSubFolders(ExchangeService service, FolderId parentFolderId, List
completeListOfFolderIds)
{
FolderView folderView = new FolderView(int.MaxValue);
FindFoldersResults foundFolders = service.FindFolders(parentFolderId, folderView);
completeListOfFolderIds.AddRange(foundFolders);
// Now recurse
foreach (Folder folder in foundFolders)
{
FindAllSubFolders(service, folder.Id, completeListOfFolderIds);
}
}
private List- GetItems(ExchangeService service ,Folder folder)
{
if (service == null)
{
return null;
}
List
- items = new List
- ();
PropertySet propertySet = new PropertySet(BasePropertySet.FirstClassProperties);
const Int32 pageSize = 50;
ItemView itemView = new ItemView(pageSize);
itemView.PropertySet = propertySet;
FindItemsResults
- searchResults = null;
try
{
do
{
searchResults = service.FindItems(folder.Id,itemView);
items.AddRange(searchResults.Items);
itemView.Offset += pageSize;
} while (searchResults.MoreAvailable);
}
catch (Exception ex)
{
}
return items;
}