Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过提供开始日期和结束日期在ews中获取邮件_Java_Exchangewebservices - Fatal编程技术网

Java 如何通过提供开始日期和结束日期在ews中获取邮件

Java 如何通过提供开始日期和结束日期在ews中获取邮件,java,exchangewebservices,Java,Exchangewebservices,我对EWS邮件相关的话题很陌生。我的任务是取回两个日期之间的所有邮件 我尝试过其他方法,但没有达到预期的效果 SearchFilter filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, greaterthanfilter); 我们如何通过提供开始日期和结束日期从EWS邮件服务器获取邮件?您的邮件中的代码方向正确: protected FindItemsResults<Item> getEma

我对EWS邮件相关的话题很陌生。我的任务是取回两个日期之间的所有邮件

我尝试过其他方法,但没有达到预期的效果

SearchFilter filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, greaterthanfilter); 
我们如何通过提供开始日期和结束日期从EWS邮件服务器获取邮件?

您的邮件中的代码方向正确:

protected FindItemsResults<Item> getEmailsInTimeRange(ExchangeService service, Date from, Date to) throws Exception {
    ItemView view = new ItemView(128);
    SearchFilter fromFilter = new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, from);
    SearchFilter toFilter = new SearchFilter.IsLessThan(ItemSchema.DateTimeReceived, to);
    SearchFilter inRangeFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, fromFilter, toFilter);
    FindItemsResults<Item> items = service.findItems(WellKnownFolderName.Inbox, inRangeFilter, view);
    return items;
}
现在迭代
FindItemsResults项

for (Item item : items) {
    EmailMessage email = EmailMessage.bind(service, item.getId(), propertySet);
    // process the email
}

propertySet
应该只包含您需要读取的属性。

您可以通过编写代码片段轻松获取代码片段。因此,这不是一个提供定制代码的服务,而是一个帮助您改进代码的平台。我尝试过几种其他方法——哪种方法最好?“你能给我们展示一下,这样我们就可以从一些东西开始了。”Stultuske使用SearchFilter,我试过了,但无法编写完整的逻辑来提取邮件。如果我能得到使用SearchFilter获取邮件的逻辑,那就太棒了。SearchFilter filter=新的SearchFilter.SearchFilterCollection(LogicalOperator.And,大于filter)@Karthiktn看到我的答案了。嗨@LuCio,谢谢你宝贵的时间和提供的答案。当我尝试实现上述给定代码并运行时,我遇到了异常。java.lang.Exception:验证失败。microsoft.exchange.webservices.data.core.EWSUPPILITIES.ValidateParamallowFull(EWSUPPILITIES.java:954)上的searchFilter,microsoft.exchange.webservices.data.core.service.folder.folder.findItems(folder.java:438)上的searchFilter,你能告诉我为什么得到这个吗?@Karthiktn我已经更新了我的答案。需要使用属性和相应的值初始化过滤器
fromFilter
toFilter
。您好@LuCio,我使用了最新修改的代码,但结果与预期不符。我在2018年10月10日(fromDate)和2018年11月10日(toDate)之间收到了4封邮件,但结果我只收到了1封日期为2018年10月10日的邮件。我使用了下面的代码SF fromFilter=newsearchfilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived,date1);SF toFilter=new SearchFilter.IsLessThanOrEqualTo(ItemSchema.DateTimeReceived,date2);SearchFilter inRangeFilter=新建SearchFilter.SearchFilterCollection(LogicalOperator.And,fromFilter,toFilter);请你调查一下好吗。谢谢,我已经运行了代码,我收到了预期的电子邮件。您确定看到的是
DateTimeReceived
而不是
DateTimeCreated
DateTimeSent
for (Item item : items) {
    EmailMessage email = EmailMessage.bind(service, item.getId(), propertySet);
    // process the email
}