【问题标题】:Exchange EWS Managed API 2.0 get by dateExchange EWS 托管 API 2.0 按日期获取
【发布时间】:2013-03-11 13:13:01
【问题描述】:

我使用 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 &lt; DateTime.Now.AddDays(-3)) continue;,因为当我使用它时,api 会从收件箱中获取所有消息,如果它超过三天就继续。我想在代码的前面指定这个过滤器,所以 api 不必处理所有消息。

【问题讨论】:

标签: c# exchange-server ews-managed-api


【解决方案1】:

如果我正确理解了问题,这应该可以。您可以在此处查看所有可用的搜索过滤器: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);

【讨论】:

  • 你在哪里指定邮箱?因为一个用户(凭据)可能在同一个域中有多个邮箱。
猜你喜欢
  • 2016-04-08
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2011-08-04
  • 2018-07-04
  • 1970-01-01
相关资源
最近更新 更多