如何在Exchange Web Server上捕获已删除的项目

Pix*_*ter 0 c# exchangewebservices ews-managed-api exchange-server-2010

在Exchange Server上创建或修改元素时,我会获得具有唯一ID的StreamingNotification以及有关该联系人/日历的其他信息,但是如何获取有关已删除项目的信息?

我从哪里获得身份证?或者至少是第一个电子邮件地址或主题?


我正在使用EWS托管API,这是我的代码:

StreamingSubscription subscription =
ser.SubscribeToStreamingNotifications(
    new FolderId[] { WellKnownFolderName.Contacts,
    WellKnownFolderName.Calendar },
    EventType.Created,
    EventType.Modified,
    EventType.Deleted
);
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 6

流式通知不会生成"删除"事件.在删除,删除或移位+删除的两种情况下,该项实际上是"已移动"到已删除的项目文件夹之一.定期删除会将您的项目移动到"DeletedItems"文件夹.Exchange维护一个dumpster文件夹,其中所有"shift + del"项目都将发送到该文件夹​​.有可能恢复它们,但有点困难.

您可以在这些文章中阅读有关Exchange的删除机制的更多信息:

  1. http://msdn.microsoft.com/en-us/library/office/dn424760(v=exchg.150).aspx
  2. http://technet.microsoft.com/en-us/library/ee364755(v=exchg.150).aspx

现在回来恢复已删除的项目,需要注意两件重要的事情

  1. 您应该在您尝试恢复该项目的人的邮箱上具有模拟访问权限.委派访问权限不允许您在RecoverableItems文件夹中搜索您将找到已删除项目的项目.

  2. 已删除项目的ItemId将更改.Exchange中的ItemId仅对文件夹唯一.在项目文件夹之间移动项目时,其ItemId会更改.但是,旧的ItemId位于Streaming events属性OldItemId中

以下代码段将让您获取已删除项目的句柄.

private void OnNotificationEvent(object sender, NotificationEventArgs args)
{
    foreach (var notification in args.Events.OfType<ItemEvent>())
    {
      if (notification.EventType == EventType.Moved)
      {
        ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "usersemail@domain.com");
        var item = Item.Bind(service, notification.ItemId);
      }
    }
}
Run Code Online (Sandbox Code Playgroud)