Outlook Interop从共享日历

时间:2016-06-14 13:58:08

标签: c# vsto outlook-addin outlook-redemption outlook-2016

请考虑以下情形: Sombody和我分享了一个日历。我可以完全访问此日历。当我删除日历中的项目时,Folder.BeforeItemMove事件被触发。到现在为止还挺好。 我希望通过检查来跟踪删除,其中MoveTo条目ID为nullApplication.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)的条目ID有效。 现在回到项目在共享文件夹中的情况:

  • 根据documentation,属性 olFolderDeletedItems 是GetSharedDefaultFolders()的no go参数(只是为了确保我访问了允许使用的其他文件夹)
  • 我试图迭代Stores系列。那里没有日历
  • 我尝试访问MoveTo文件夹中的商店属性 - > null
  • 我试图从会话中获取商店(以检查PR_IPM_WASTEBASKET_ENTRYID) - >失败
  • CAN 获取文件夹名称问题是,它可能是重命名和/或本地化的,我不希望一个包含所有已删除文件夹名称的数组浮动,如果我可以'帮助它
  • 我使用普通OOM或兑换文件夹界面
  • 测试了所有这些

任何想法?

(在Outlook 2016中测试)

2 个答案:

答案 0 :(得分:0)

RDOStore.GetDefaultFolder(olFolderDeletedItems)RDOSession.GetSharedDefaultFolder(olFolderDeletedItems)都在Redemption中工作。

答案 1 :(得分:0)

如果您可以将日历作为共享日历进行访问(例如,通过OWA向您发送电子邮件邀请)已删除的项目将转到您删除的项目文件夹。这可以通过 Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)

如果日历位于个人资料中的第二个邮箱中,则已删除的项目将转到该帐户的已删除项目文件夹,您可以通过

访问该文件夹

Outlook.Store _Store = MoveTo.Store;

Outlook.Folder _Folder = MoveTo.GetDefaultFolder (OlDefaultFolders.olFolderDeletedItems) as Outlook.Folder;

您可以通过检查Folder.Store是否为空(在共享非邮箱日历的情况下)来区分这两种情况