C# 新日历事件或修改日历事件的EWS PullSubscription

C# 新日历事件或修改日历事件的EWS PullSubscription,c#,.net,exchangewebservices,C#,.net,Exchangewebservices,我一直在搜索一个EWS pullsubscription示例,该示例允许我获取自pullsubscription启动以来为用户创建或修改的日历事件列表。我有工作代码来获取收件箱中的信息,但我还没有找到一个好的例子来说明如何在日历中这样做 下面是收件箱的一个示例;是否有人可以为我提供一个链接或代码示例,以使用Exchange Web服务请求订阅完成日历事件或约会的相同操作 ExchangeService service; PullSubscription subscriptionI

我一直在搜索一个EWS pullsubscription示例,该示例允许我获取自pullsubscription启动以来为用户创建或修改的日历事件列表。我有工作代码来获取收件箱中的信息,但我还没有找到一个好的例子来说明如何在日历中这样做

下面是收件箱的一个示例;是否有人可以为我提供一个链接或代码示例,以使用Exchange Web服务请求订阅完成日历事件或约会的相同操作

    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;
            }
        }
    }

只需使用指定的事件类型订阅日历而不是收件箱

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

或者,您可以为
FolderId(WellKnownFolderName.Inbox)
FolderId(WellKnownFolderName.Calendar)
创建一个拉式通知,其中包含所需的
事件类型。

您的问题回答了我的问题;)