我正在构建一个与EWS Java API 2.0一起使用的Web客户端邮件。
我想根据具体日期从收件箱中收到邮件。
这就是我已经拥有的:
public void foo(String dateToCompare){
try {
DateTime dateTime = DateTime.parse("2016-02-01T08:00:00Z");
ItemView view = new ItemView(ServiceConst.ListLimit);
SearchFilter searchFilter = new SearchFilter.IsGreaterThan(EmailMessageSchema.DateTimeReceived, dateTime);
FindItemsResults<Item> itemsList = this.exchangeService.findItems(WellKnownFolderName.Inbox,searchFilter, view);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是我得到的错误:
请求失败。 “org.joda.time.DateTime”类型的值不能用于“Value”属性。
据我所知,joda.DateTime类对它无效,那么替代方法是什么?
答案 0 :(得分:1)
发送电子邮件后,您已经具有消息的ID:
来自班级:
microsoft.exchange.webservices.data.core.service.item.EmailMessage
ExchangeService服务=新的ExchangeService(ExchangeVersion.Exchange2010_SP2); service.setUrl(new URI(url));
ExchangeCredentials credentials = new WebCredentials(user, password, domain);
service.setCredentials(credentials);
service.setTraceEnabled(trace);
EmailMessage message = new EmailMessage(service);
message.save();
message.load();
String uniqueMessagID = message.getConversationId();
message.send();
get对话ID给出的ID像上面读取时一样等于
搜索要使用的已读电子邮件后:
microsoft.exchange.webservices.data.search.FindItemsResults<Item>
microsoft.exchange.webservices.data.core.service.item.Item
microsoft.exchange.webservices.data.core.PropertySet
microsoft.exchange.webservices.data.core.enumeration.property.BasePropertySet
microsoft.exchange.webservices.data.core.ExchangeService
microsoft.exchange.webservices.data.core.service.item.EmailMessage
ItemView view = new ItemView(numberOfItemResult);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
view.setPropertySet(new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived));
FindItemsResults<Item> findResults = service.findItems(WellKnownFolderName.Inbox, new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.ContainsSubstring(ItemSchema.Subject, "")), view);
if (findResults != null) {
PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
itempropertyset.setRequestedBodyType(BodyType.Text);
for (Item item : findResults) {
if (item instanceof EmailMessage) {
item.load(itempropertyset);
EmailMessage emailMessage = ((EmailMessage) item);
emailMessage.getConversationId().getUniqueId();
}
}
}
答案 1 :(得分:0)
你必须使用java.util.Date类,而不是joda.DateTime类。
以下是您想要的search based on received time示例