2013-03-21 4 views
0

임에 의해 API 2.0 GET을 관리. 지금 사흘 후면에서받은 편지함에있는 모든 메일을 얻기 위해이 코드를 사용합니다.교환 EWS 내 C# 프로젝트와 우리의 Exchange 2010 서버 사이의 통신에 EWS 관리 API를 사용하여 날짜

var ews = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
    ews.Credentials = new NetworkCredential(usr, psw, dmn); 
    ews.AutodiscoverUrl(url); 

    PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties); 
    itempropertyset.RequestedBodyType = BodyType.Text; 

    ItemView view = new ItemView(int.MaxValue); 
    FindItemsResults<Item> findResults; 
    view.PropertySet = itempropertyset; 

    do 
    { 
     findResults = ews.FindItems(WellKnownFolderName.Inbox, view); 

     foreach (Item item in findResults.Items) 
     { 
      if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue; 

      item.Load(itempropertyset); 

      var message = EmailMessage.Bind(ews, item.Id, 
       new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments)); 

      string to = message.ToRecipients[0].Address.ToLower(); 
      string body = item.Body; 
     } 

     view.Offset += findResults.TotalCount; 
    } while (findResults.MoreAvailable); 

이제 문제가 발생했습니다. 나는이를 사용하는 경우, API가받은 편지함에서 모든 메시지를 얻을 수 있기 때문에이 라인 if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue;을 개선하고 단지 그 나이 후 삼일 경우 계속하려면. 코드에서이 필터를 일찍 지정하면 API가 모든 메시지를 처리하지 않아도됩니다. 내가 문제를 정확하게 이해한다면

+0

당신이 전혀 새로운 것을 시도 했습니까? 여기에 설명 된대로'FindItems'에 대한'SearchFilter'가 있습니다. http://msdn.microsoft.com/en-us/library/jj221817(v=exchg.80).aspx – banging

+0

물론 시도했습니다! 그렇지 않으면 여기서 질문하지 않았을 것입니다. 너도 그걸 발견하지 못했 니? –

답변

9

이 작동합니다. 현재 사용할 수있는 모든 검색 필터를 볼 수 있습니다 EWS Search Filters

ItemView view = new ItemView(int.MaxValue); 
FindItemsResults<Item> findResults; 
view.PropertySet = itempropertyset; 

SearchFilter searchFilter = 
    new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, DateTime.Now.AddDays(-3)); 

findResults = service.FindItems(WellKnownFolderName.Inbox, searchFilter, view); 
관련 문제