簡體   English   中英

按日期獲取Exchange EWS托管API 2.0

[英]Exchange EWS Managed API 2.0 get by date

我使用EWS托管API在c#項目和我們的Exchange 2010服務器之間進行通信。 從現在開始和三天前,我都使用此代碼來獲取收件箱中的所有郵件。

    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);

現在的問題。 if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue;我想改善這一行if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue; 因為當我使用它時,api從收件箱中獲取所有消息,並且如果它的年齡超過三天,則繼續。 我想在代碼的前面指定此過濾器,因此api不必處理所有消息。

如果我正確理解了該問題,則應該可以正常工作。 您可以在此處查看所有可用的搜索過濾器: EWS搜索過濾器

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM