Mah*_*leh 7 exchangewebservices ewsjavaapi
我正在尝试使用subscribeToPullNotifications检测收件箱中的新电子邮件,如下所示:
PullSubscription subscription = service.subscribeToPullNotifications(
folder, 1, null, EventType.NewMail);
GetEventsResults events = subscription.getEvents();
System.out.println("####### EVENTS: "
+ events.getItemEvents().toString());
for (ItemEvent itemEvent : events.getItemEvents()) {
if (itemEvent.getEventType() == EventType.NewMail) {
EmailMessage message = EmailMessage.bind(service,
itemEvent.getItemId());
System.out.println("######## NEW EMAIL MESSAGE IS: "
+ message.getSubject());
}
}
Run Code Online (Sandbox Code Playgroud)
但events.getItemEvents()
总是空的,即使我可以在收件箱中看到新的电子邮件.还有如何在应用程序运行时始终重复上述代码,以便每分钟检查一次新的电子邮件.
小智 2
这里取决于您何时调用它,如果假设您将其作为特定间隔调用,那么您需要在新请求中传递先前响应的“WaterMark”,否则其间发生的所有事件都将丢失。 方法:subscription.getWaterMark()
需要将其作为第三个参数传递给方法 subscribeToPullNotifications()
否则,您可以通过将其放入循环中来持续拉动同一服务:
while (true) {
GetEventsResults events = null;
try {
events = subscription.getEvents();
} catch (Exception e1) {
e1.printStackTrace();
}
for (ItemEvent itemEvent : events.getItemEvents()) {
// do something...
}
}
Run Code Online (Sandbox Code Playgroud)
但这会不断地从服务器增加负载,因此最好使用第一种方法,定期订阅,并在请求中传递先前的水印。
归档时间: |
|
查看次数: |
741 次 |
最近记录: |