2013-04-04 4 views
1

In EWS Managed API вы можете сделать:EWS Managed API лучший способ использовать FindItems

Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox); 
inbox.FindItems(...) 

или вы могли бы сделать:

service.FindItems(WellKnownFolderName.Inbox, filter, view); 

, как описано здесь: http://msdn.microsoft.com/en-us/library/exchange/dd633693(v=exchg.80).aspx

Что разница между обоими методами? Какой из них предпочтительнее? (я не думаю, что вам действительно нужно привязать к папке?)

ответ

1

Folder.Bind Позволяет связать папку, которую вы хотите. Вы можете даже привязать к папке другого пользователя, если у вас есть разрешение. Или любую папку после восстановления FolderID (вы можете использовать его как параметр)

Например, если я являюсь администратором обмена, и я хотел бы получить Корневую папку пользователя, у которого есть smtp-адрес «john». [email protected]», я бы привязать к папке так:

Folder FolderBind = 
        Folder.Bind(service, new FolderId 
         (WellKnownFolderName.MsgFolderRoot, "[email protected])); 

После того как вы FolderBind загружен с любой папкой вы хотите, вы можете использовать другой метод, поскольку он принимает параметр Folder.ID, что вам может не знать. Но знаете, благодаря Folder.Bind, у вас есть FolderID в MsgFolderRoot из «[email protected]», так что вы можете выполнить поиск внутри его элементов с:

FindItemsResults<Item> findResults = service.FindItems(FolderBind.Id, searchFilter, view); 

Я не знаю, если Я ясно дал понять. У вас есть больше сомнений, просто спросите.

EDIT:

Вы можете дать FindItems в refinated searchFilter, что позволит вам получить пункты , участвующих в некоторых требований. Как поиск писем с приложением. Поиск электронных писем старше даты. ETT.

Вот пример:

List<SearchFilter> searchORFilterCollection = new List<SearchFilter>(); 
      searchORFilterCollection.Add(new SearchFilter.IsEqualTo(EmailMessageSchema.HasAttachments, true)); 
      searchORFilterCollection.Add(new SearchFilter.IsLessThan(EmailMessageSchema.DateTimeReceived,DateTime.Now.AddMonths(-3))); 


SearchFilter searchFilter= new SearchFilter.SearchFilterCollection(LogicalOperator.And,searchORFilterCollection.ToArray()); 
+0

Хорошо, эта часть дала понять: если вы хотите, чтобы искать в других папках пользователей как администратор. (John Snow hèhè ;-)) – juFo

+0

Да. Я использовал этот код для переноса электронной почты из лотоса для обмена. Действительно полезно. Используйте folderbind, чтобы получить информацию о папке в любой папке, в которой вы нуждаетесь. Затем используйте findResults для получения предметов. Вы можете указать некоторые фильтры в SearchFilter, такие как электронная почта с вложениями, электронные письма с датой, старше ... –

Смежные вопросы