C#使用Microsoft.Exchange.WebSercvices EWS在指定日期后获取邮件

问题描述 投票:1回答:1

我正在使用EWS下载邮件。由于邮箱很大,我想用querystring过滤邮件。我找到了一种仅使用Received:20/11/2019下载指定日期的邮件的方法,但是

  1. 这不会返回该日期以来的所有邮件(为什么-似乎只有带有附件的未读邮件才是结果的一部分)
  2. 我想收到2019年11月20日及以后的所有邮件

这是我的代码:

    Microsoft.Exchange.WebServices.Data.ExchangeService exchange = new Microsoft.Exchange.WebServices.Data.ExchangeService(Microsoft.Exchange.WebServices.Data.ExchangeVersion.Exchange2013);
    exchange.Credentials = new Microsoft.Exchange.WebServices.Data.WebCredentials("User", "********", "Domain");
    exchange.AutodiscoverUrl("[email protected]");
    string QString = "Recieved:20/11/2019";

    if (exchange != null)
    {
        Microsoft.Exchange.WebServices.Data.FindItemsResults<Microsoft.Exchange.WebServices.Data.Item> Results = exchange.FindItems(Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Inbox, QString, new Microsoft.Exchange.WebServices.Data.ItemView(100));

        foreach(Microsoft.Exchange.WebServices.Data.Item MI in Results)
        {
            /*Print subject to command window*/
            System.Console.WriteLine(MI.Subject);
        }
    }

我在这里找到了答案,但是它的PHP和我并不是很熟练:Getting emails after a specific date with php-ews (Exchange Web Services)

c# query-string exchangewebservices
1个回答
0
投票

啊,SearchFilter对我来说效果很好:

Microsoft.Exchange.WebServices.Data.SearchFilter SF = new Microsoft.Exchange.WebServices.Data.SearchFilter.IsGreaterThanOrEqualTo(Microsoft.Exchange.WebServices.Data.ItemSchema.DateTimeReceived, new System.DateTime(2019,11,20));
Microsoft.Exchange.WebServices.Data.FindItemsResults<Microsoft.Exchange.WebServices.Data.Item> Results = exchange.FindItems(Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Inbox, SF, new Microsoft.Exchange.WebServices.Data.ItemView(100));
© www.soinside.com 2019 - 2024. All rights reserved.