EWS托管API:在DateTimeReceived上按搜索过滤器获取电子邮件

时间:2014-12-28 17:59:41

标签: api exchangewebservices managed

搜索收件箱中在特定时间范围后收到的项目(如下面的代码所示)。它会搜索日期,但它也会返回具有指定时间戳的电子邮件。我只想在指定的时间戳之后收到电子邮件。

SearchFilter greaterthanfilter = new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived,
                    Convert.ToDateTime(lastUploadedEmailtimeStamp));

mailItems = inbox.FindItems(greaterthanfilter, view);

不确定是否有人遇到任何类似的问题?基本上我想搜索特定mm/dd/yyyy hh:mm:ss之后收到的项目。

1 个答案:

答案 0 :(得分:2)

Exchange将日期时间的精确度降低到毫秒,EWS只为日期时间提供精确到秒,但是搜索过滤器确实具有日期时间的精度毫秒。因此,如果你的日期时间标记你的使用只有精确的秒,那么你需要使用这样的东西,例如你想要在7:43和8秒之后收到的所有电子邮件

SearchFilter sfs = new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, DateTime.ParseExact("2014/12/29 07:43:08.999", "yyyy/MM/dd HH:mm:ss.fff", null));
FindItemsResults<Item> femaa = service.FindItems(WellKnownFolderName.Inbox,sfs, iItemView);

如果要查看邮件的实际精度,则需要使用MAPFC编辑器,如Outlook的MFCMapi。然后,您可以查看作为FileTime&#34; 8字节的PT_Systime值;一个64位整数,表示自1601年1月1日以来100纳秒间隔的数量。见http://msdn.microsoft.com/en-us/library/ee157583(v=EXCHG.80).aspx

干杯 格伦