2012-01-20 60 views
2

我正在嘗試開發一個AddIn - 或者說,現在只是一個概念驗證,看看我腦海中是否真的有可能 - 對於Outlook(準確地說),在.NET/C#中,我面臨以下問題:如何識別Outlook中的「我的」自定義文件夾AddIn

AddIn應該提供一個新的自定義文件夾(在層次結構的頂層,即旁邊所有其他主要項目,如任務,日曆,聯繫人等),以向用戶提供項目。所以我認爲,在AddIn的啓動方法中,我可以簡單地做一些類似於

Outlook.Folder parent = inBox.Parent as Outlook.Folder; 
Outlook.Folder myCustomFolder = (Outlook.Folder)parent.Folders.Add("My Custom Folder"); 

......並且確實有效。但是,退出Outlook並重新啓動後會出現問題。由於該文件夾正在被Outlook保留,因此Outlook下次啓動並再次初始化AddIn時仍然存在,因此文件夾的創建失敗,因爲已存在同名對象。但我沒有看到任何方式如何判斷這是上次「我的」文件夾。

我不想依靠其識別的文件夾(這只是太不可靠,甚至考慮;用戶可能想要重命名,其他加載項可能存在的是創建一個同名的文件夾,而不是提到本地化問題等),但我還可以使用什麼來確定自定義文件夾已經創建?

我要麼必須能夠以某種方式添加一個「標籤」做文件夾,以便以後我可以將其識別爲「我的」 - 或者需要某種類型的唯一標識該文件夾的標識符(並保持不變甚至在展望Outlook之間!),所以我可以通過它認出它。

我一直在尋找的[MAPI]Folder對象的EntryIDStoreID領域,但在MSDN中的(可悲的是,不是很詳細)的說明,我不知道如果我能依靠他們,因爲顯然他們能在一定條件下改變。

有什麼建議嗎?

回答

1

除非文件夾被刪除然後重新創建,否則條目不會更改。但它不會是相同的文件夾 - 只是另一個可能具有相同名稱的文件夾。 Outlook所做的是將特殊文件夾的入口標識存儲在根IPM文件夾和/或收件箱文件夾中。 由於您無法在Exchange中設置文件夾的命名屬性,因此無法挑選自己的屬性標記而沒有遇到衝突的風險,因此在收件箱文件夾(始終存在於默認存儲區中)中創建隱藏消息並存儲文件夾條目ID以及您可能需要的任何其他配置屬性。爲確保你的配置隱藏信息是唯一的,請選擇一個獨特的信息類,例如IPM.Note.MyCompany.MyAdddin.Config。 可以使用Outlook對象模型中的MAPIFolder.GetStorage或Redemption中的RDOFolder.HiddenItems來訪問隱藏的消息。

+0

所以我現在使用EntryID來識別文件夾,但我不把它保存在隱藏的消息中;而是將其與AddIn的配置設置(存儲在用戶的應用程序數據配置文件夾中的文件中)保持在一起。不過,我會記住這個隱藏的消息技巧,以防萬一我的方法無法正常工作。 –

相關問題