Streaming Notifications will not generate a "Delete" event. In both cases of delete, delete or shift+delete, the Item is actually "Moved" to the one of the deleted Items Folder.
A regular delete moves your item to the "DeletedItems" Folder.
Exchange maintains a dumpster folder in which all your "shift+del" items are sent to. It is possible to recover them, but a little harder.
You can read more about the Deletion mechanism of Exchange in these articles:
- http://msdn.microsoft.com/en-us/library/office/dn424760(v=exchg.150).aspx
- http://technet.microsoft.com/en-us/library/ee364755(v=exchg.150).aspx
Now coming back to recover the deleted items, 2 important things to note
You should have Impersonation access on the person's mailbox for whom you are trying to recover the item. Delegation access wont let you search for items in the RecoverableItems Folder where you will find your deleted items.
ItemId of the deleted item will change. ItemId in Exchange is only unique to the Folder. When an item is moved between folders, its ItemId changes. However, the old ItemId is found in the Streaming events property OldItemId
The following code snippet will let you get a handle on the deleted item.
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);
}
}
}