C# Outlook互操作访问共享日历中的已删除项目文件夹

C# Outlook互操作访问共享日历中的已删除项目文件夹,c#,vsto,outlook-addin,outlook-redemption,outlook-2016,C#,Vsto,Outlook Addin,Outlook Redemption,Outlook 2016,考虑以下场景: Sombody和我共享了一个日历。我可以完全访问此日历。当我删除日历中的项目时,将触发文件夹.BeforeItemMove事件。到现在为止,一直都还不错。 我想通过检查MoveTo条目id是null还是Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)的条目id来跟踪删除,这两种方法都有效。 现在回到项目位于共享文件夹中的情况: 根据属性olFolderDelet

考虑以下场景: Sombody和我共享了一个日历。我可以完全访问此日历。当我删除日历中的项目时,将触发
文件夹.BeforeItemMove
事件。到现在为止,一直都还不错。 我想通过检查MoveTo条目id是
null
还是
Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)
的条目id来跟踪删除,这两种方法都有效。 现在回到项目位于共享文件夹中的情况:

  • 根据属性olFolderDeletedItems,它是GetSharedDefaultFolders()的一个不允许作为参数的参数(只是为了确保我访问了允许工作的其他文件夹)
  • 我试着遍历Stores集合。那里没有日历
  • 我试图访问MoveTo文件夹上的Store属性->
    null
  • 我试图从会话中获取存储(检查PR\u IPM\u废纸篓\u ENTRYID)->失败
  • 我可以得到的文件夹名称的问题是,它可能被重命名和/或本地化,我不希望数组与所有删除的文件夹名称浮动周围,如果我不能帮助它
  • 我使用普通OOM或redemptions文件夹接口测试了所有这些
有什么想法吗


(在Outlook 2016中测试)

RDOStore.GetDefaultFolder(olFolderDeletedItems)
RDOSession.GetSharedDefaultFolder(olFolderDeletedItems)
都可以赎回

RDOStore.GetDefaultFolder(olFolderDeletedItems)
RDOSession.GetSharedDefaultFolder(olFolderDeletedItems)
都可以赎回

如果您有权以共享日历的形式访问日历(例如,通过OWA以电子邮件邀请的形式发送给您),则删除的邮件转到您的“已删除邮件”文件夹。这个你可以通过
Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)

如果日历位于您配置文件中的第二个邮箱中,则删除的项目将转到该帐户的“删除的项目”文件夹,您可以通过该文件夹进行访问

Outlook.Store\u Store=MoveTo.Store

Outlook.Folder\u Folder=MoveTo.GetDefaultFolder(OlDefaultFolders.olFolderDeletedItems)作为Outlook.Folder;


您可以通过检查
文件夹.Store
是否为空(在共享非邮箱日历的情况下是空的)

来区分这两种情况。如果您可以作为共享日历访问日历(例如,通过OWA以电子邮件邀请的形式发送给您),则删除的项目转到您的“删除项目”文件夹。这个你可以通过
Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)

如果日历位于您配置文件中的第二个邮箱中,则删除的项目将转到该帐户的“删除的项目”文件夹,您可以通过该文件夹进行访问

Outlook.Store\u Store=MoveTo.Store

Outlook.Folder\u Folder=MoveTo.GetDefaultFolder(OlDefaultFolders.olFolderDeletedItems)作为Outlook.Folder;


您可以通过检查
文件夹.Store
是否为空(在共享非邮箱日历中为空)

我很困惑:您是否正在尝试访问共享邮箱中的“已删除邮件”文件夹?或从共享日历中删除项目时的陷阱?删除共享日历中的项目(不是共享邮箱中的日历,我可以使用我描述的stores方法访问这些日历)。我使用MSDN中描述的模式包装检查器(没有问题,我得到的是before delete事件)但当用户删除约会时,您得到的唯一事件是文件夹事件。如果将项目包装在文件夹事件中,则会出现7种RCW hells。您是说AppointmentItem.BeforeDelete事件不会触发共享日历中的项目,即使它被困在Inspector包装中?如果包装,理论上会触发,但是,D'n'D的Inspector_New事件或通过上下文菜单删除的项目从来都没有发生过-如果还有Inspector open事件,那么将它们包装在选择更改上会导致各种有趣的事情。什么是“D'nD'?顺便说一句,如果您正在处理选择,您可以为上下文菜单捕获Ribbon控件。但我听说,在所有可能的场景中捕获一个项目的删除是一件很麻烦的事情。这是兑换便利的地方,因为您可以捕获整个商店的单个删除事件。我很困惑:您是否尝试访问共享邮箱中的“已删除邮件”文件夹?或从共享日历中删除项目时的陷阱?删除共享日历中的项目(不是共享邮箱中的日历,我可以使用我描述的stores方法访问这些日历)。我使用MSDN中描述的模式包装检查器(没有问题,我得到的是before delete事件)但当用户删除约会时,您得到的唯一事件是文件夹事件。如果将项目包装在文件夹事件中,则会出现7种RCW hells。您是说AppointmentItem.BeforeDelete事件不会触发共享日历中的项目,即使它被困在Inspector包装中?如果包装,理论上会触发,但是,D'n'D的Inspector_New事件或通过上下文菜单删除的项目从来都没有发生过-如果还有Inspector open事件,那么将它们包装在选择更改上会导致各种有趣的事情。什么是“D'nD'?顺便说一句,如果您正在处理选择,您可以为上下文菜单捕获Ribbon控件。但我听说,在所有可能的场景中捕获一个项目的删除是一件很麻烦的事情。这是可以方便地赎回的地方,因为您可以捕获整个存储的单个删除事件。RDOSession.GetSharedDefaultFolder(olFolderDeletedItems)无法工作,如RDO文档中所述:“文件夹的类型。接受与Outlook对象模型中的Namespace.GetDefaultFolder方法相同的值”和i