EWS PullSubscription for new or changed calendar events

I was looking for an EWS pullsubscription example that allows me to get a list of calendar events that have been created or changed for a user since the start of a pull subscription. I have a working code to get this information for the Inbox, but I have not found a good example of how to do this for the Calendar.

The following is an example for the inbox; can someone provide me with a link or sample code to accomplish the same task for Calendar events or appointments using an Exchange web service subscription?

ExchangeService service; PullSubscription subscriptionInbox; private void SetService() { service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); service.Url = new Uri("https://mail.myserver.com/EWS/Exchange.asmx"); } private void SetSubscription() { if(service == null) { SetService(); } // Subscribe to pull notifications in the Inbox folder, and get notified when // a new mail is received, when an item or folder is created, or when an item // or folder is deleted. subscriptionInbox = service.SubscribeToPullNotifications( new FolderId[] { WellKnownFolderName.Inbox }, 5 /* timeOut: the subscription will end if the server is not polled within 5 minutes. */, null /* watermark: null to start a new subscription. */, EventType.NewMail, EventType.Modified); } private void btnGetLatestMessages_Click(object sender, EventArgs e) { if(subscriptionInbox == null) { SetSubscription(); } GetEventsResults eventsInbox = subscriptionInbox.GetEvents(); EmailMessage message; // Loop through all item-related events. foreach(ItemEvent itemEvent in eventsInbox.ItemEvents) { switch(itemEvent.EventType) { case EventType.NewMail: try { Item item = Item.Bind(service, itemEvent.ItemId); if(item.ItemClass.ToLower() == "IPM.Note".ToLower()) { message = EmailMessage.Bind(service, itemEvent.ItemId); MessageBox.Show("Inbox/NewMail - " + message.Subject); } } catch(Exception ex) { MessageBox.Show("EventType.NewMail - " + itemEvent.ItemId); } break; case EventType.Modified: try { Item item = Item.Bind(service, itemEvent.ItemId); if(item.ItemClass.ToLower() == "IPM.Note".ToLower()) { message = EmailMessage.Bind(service, itemEvent.ItemId); MessageBox.Show("Inbox/Modified - " + message.Subject); } } catch(Exception ex) { MessageBox.Show("EventType.NewMail - " + itemEvent.ItemId); } break; } } } 
+4
source share
1 answer

Just subscribe to the calendar instead of your inbox with the indicated event types.

 var subscriptionCalendar = service.SubscribeToPullNotifications( new[] { new FolderId(WellKnownFolderName.Calendar) }, 1440, null, EventType.Created, EventType.Modified); 

Alternatively, you can create one pull notification for FolderId(WellKnownFolderName.Inbox) and FolderId(WellKnownFolderName.Calendar) with the desired EventType .

+6
source

All Articles