【发布时间】:2012-02-15 05:06:13
【问题描述】:
我正在尝试开发一个插件——或者更确切地说,现在只是一个概念验证,看看我的想法是否真的可行——用于 Outlook(准确地说是 2010 年),在 . NET/C#,我面临以下问题:
插件应该提供一个新的自定义文件夹(在层次结构的顶层,即在所有其他主要项目旁边,如任务、日历、联系人等),在其中向用户提供项目。所以我认为在 AddIn 的 Startup 方法中我可以简单地做一些类似的事情
Outlook.Folder parent = inBox.Parent as Outlook.Folder;
Outlook.Folder myCustomFolder = (Outlook.Folder)parent.Folders.Add("My Custom Folder");
... 这确实有效。但是,退出 Outlook 并重新启动后出现问题。由于文件夹正在被 Outlook 持久化,下次 Outlook 启动并再次初始化 AddIn 时它仍然存在,因此文件夹的创建失败,因为已存在同名对象。但我看不出有什么方法可以判断这是上次的“我的”文件夹。
我不想依赖它的 name 来识别文件夹(这太不可靠了,甚至无法考虑;用户可能想要重命名它,可能存在其他创建文件夹的插件同名,更不用说本地化问题等),但我还能用什么来确定自定义文件夹已经创建?
我要么必须能够以某种方式在文件夹中添加一个“标签”,以便我以后可以将其识别为“我的” - 要么需要某种唯一标识文件夹的 id(并且即使它保持不变在 Outlook 启动之间!)所以我可以通过它识别它。
我一直在查看 [MAPI]Folder 对象的 EntryID 和 StoreID 字段,但是从 MSDN 上的(遗憾的是,不是很详细)描述中,我不确定是否可以依赖它们,因为显然它们可以在某些条件下发生变化。
有什么建议吗?
【问题讨论】:
标签: c# add-in mapi outlook-2010