-
Notifications
You must be signed in to change notification settings - Fork 566
The server cannot service this request right now. Try again later. #644
Description
package com.mtuskerbase.app.widget.mailExchange;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.PropertySet;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.core.enumeration.notification.EventType;
import microsoft.exchange.webservices.data.core.enumeration.property.WellKnownFolderName;
import microsoft.exchange.webservices.data.core.enumeration.service.DeleteMode;
import microsoft.exchange.webservices.data.core.response.GetItemResponse;
import microsoft.exchange.webservices.data.core.response.ServiceResponseCollection;
import microsoft.exchange.webservices.data.core.service.item.EmailMessage;
import microsoft.exchange.webservices.data.core.service.schema.ItemSchema;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import microsoft.exchange.webservices.data.notification.ItemEvent;
import microsoft.exchange.webservices.data.notification.NotificationEvent;
import microsoft.exchange.webservices.data.notification.NotificationEventArgs;
import microsoft.exchange.webservices.data.notification.StreamingSubscription;
import microsoft.exchange.webservices.data.notification.StreamingSubscriptionConnection;
import microsoft.exchange.webservices.data.notification.StreamingSubscriptionConnection.INotificationEventDelegate;
import microsoft.exchange.webservices.data.notification.StreamingSubscriptionConnection.ISubscriptionErrorDelegate;
import microsoft.exchange.webservices.data.notification.SubscriptionErrorEventArgs;
import microsoft.exchange.webservices.data.property.complex.FolderId;
import microsoft.exchange.webservices.data.property.complex.ItemId;
import microsoft.exchange.webservices.data.property.complex.MessageBody;
public class EmailRunner2 implements INotificationEventDelegate, ISubscriptionErrorDelegate{
public static ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
private static StreamingSubscriptionConnection conn;
public static StreamingSubscription subscription;
public static void main(String[] args) {
EmailRunner2 runner = new EmailRunner2();
runner.connect();
}
public void connect() {
ExchangeCredentials credentials = new WebCredentials("***", "%**@s5!");
exchangeService.setCredentials(credentials);
try {
exchangeService.setUrl(new URI("###"));
WellKnownFolderName sd = WellKnownFolderName.Inbox;
FolderId folderId = new FolderId(sd);
ArrayList<FolderId> folder = new ArrayList<FolderId>();
folder.add(folderId);
subscription = exchangeService.subscribeToStreamingNotifications(folder, EventType.NewMail);
conn = new StreamingSubscriptionConnection(exchangeService, 30);
conn.addSubscription(subscription);
conn.addOnNotificationEvent(this);
conn.addOnDisconnect(this);
conn.open();
EmailMessage msg = new EmailMessage(exchangeService);
msg.setSubject("Testing Streaming Notification on 16 Aug 2016");
msg.setBody(MessageBody.getMessageBodyFromText("Streaming Notification "));
msg.getToRecipients().add("gary.zhang@hatchsolution.com");
msg.send();
boolean loop = true;
int i = 0;
while (loop) {
Thread.sleep(20000);
msg.send();
if (i++ > 100) {
loop = false;
}
}
System.out.println("end........");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void subscriptionErrorDelegate(Object sender, SubscriptionErrorEventArgs args) {
System.out.println("error...." + args.getException());
}
@Override
public void notificationEventDelegate(Object sender, NotificationEventArgs args) {
System.out.println("Notification event....");
// First retrieve the IDs of all the new emails
List<ItemId> newMailsIds = new ArrayList<ItemId>();
Iterator<NotificationEvent> it = args.getEvents().iterator();
while (it.hasNext()) {
ItemEvent itemEvent = (ItemEvent) it.next();
if (itemEvent != null) {
newMailsIds.add(itemEvent.getItemId());
}
}
if (newMailsIds.size() > 0) {
// Now retrieve the Subject property of all the new emails in one
// call to EWS.
ServiceResponseCollection<GetItemResponse> responses;
try {
responses = exchangeService.bindToItems(newMailsIds, new PropertySet(ItemSchema.Subject));
System.out.println("count=======" + responses.getCount());
for (GetItemResponse response : responses) {
System.out.println("count=======" + responses.getClass().getName());
System.out.println("subject=======" + response.getItem().getSubject());
response.getItem().delete(DeleteMode.MoveToDeletedItems);
// Console.WriteLine("subject====" + response.Item.Subject);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
The server cannot service this request right now. Try again later. help!!!!