如何获取已删除的Exchange项目?

时间:2014-08-15 16:47:50

标签: c# outlook exchange-server exchangewebservices exchange-server-2010

我正在使用带有流连接的Exchange Web服务API来获取对日历的更改。

如果我转到我的日历并删除一个事件,新的通知事件方法就会启动:

private void OnNewEvent(object sender, NotificationEventArgs args) {
    var ids = from e in args.Events.OfType<ItemEvent>()
              select e.ItemId;

    //This results in an error code
    var response = args.Subscription.Service.BindToItems(ids, new PropertySet(BasePropertySet.FirstClassProperties));
}

但是,我无法找到已删除的事件。我希望能够获取事件详细信息(例如姓名,预定时间等)。有什么方法可以在事件被删除时获取,或者是我可以检索id的唯一信息吗?

2 个答案:

答案 0 :(得分:0)

写在这里Pull notifications for EWS deletion-related mailbox events in Exchange 对于Exchange 2010,该事件的类型为&#34; DeletedEvent&#34;。 由于项目被删除,因此操作Item.Bind(OldItemId)将失败。 您现在可以拥有的唯一信息是来自事件的OldFolderId和OldItemId。 除非您在某些数据库中拥有相应的信息(OutlookUniqueId =&gt; AllInfos),否则您将无法获得该信息。

答案 1 :(得分:0)

流式通知不会生成Delete事件。删除项目后,会将其移动到“已删除项目”文件夹中。

因此,您需要检查EventType.Moved通知。

private void OnNewEvent(object sender, NotificationEventArgs args) {
    foreach (var notification in args.Events.OfType<ItemEvent>())
    {
        if (notification.EventType == EventType.Moved)
            var item = Item.Bind(service, notification.ItemId);
    }
}
相关问题