考虑以下场景:Sombody与我共享了一个日历。我可以完全访问此日历。当我删除日历中的项目时,Folder.BeforeItemMove
事件将被激发。到目前为止还不错。我想通过检查MoveTo条目id是null
还是有效的Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)
的条目id来跟踪删除。现在回到项目位于共享文件夹中的情况:
- 根据文档,属性olFolderDeletedItems是GetSharedDefaultFolders()的禁止参数(只是为了确保我访问了允许使用的其他文件夹)
- 我试着反复浏览Stores系列。没有日历
- 我尝试访问MoveTo文件夹上的存储属性->
null
- 我尝试从会话获取存储(以检查PR_IPM_WASTEBASKET_ENTRYID)->失败
- 我CAN获取文件夹名称问题是,它可能会被重命名和/或本地化,如果我无法控制,我不希望所有删除的文件夹名称都浮动在数组中
- 我使用普通OOM或赎回文件夹接口测试了所有这些
有什么想法吗?
(在Outlook 2016中测试)
RDOStore.GetDefaultFolder(olFolderDeletedItems)
和RDOSession.GetSharedDefaultFolder(olFolderDeletedItems)
都在Redemption中工作。
如果您可以以共享日历的形式访问日历(例如,通过OWA以电子邮件邀请的形式发送给您),则已删除的项目将转到您的已删除项目文件夹。这个你可以通过Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)
如果日历在您个人资料中的第二个邮箱中,则已删除的项目将转到该帐户的已删除项目文件夹,您可以通过访问该文件夹
Outlook.Store _Store = MoveTo.Store;
Outlook.Folder _Folder = MoveTo.GetDefaultFolder (OlDefaultFolders.olFolderDeletedItems) as Outlook.Folder;
您可以通过检查Folder.Store
是否为空(在共享非邮箱日历的情况下为空)来区分这两种情况