2016-04-02 56 views
0

我有以下場景: 應該以編程方式創建電子郵件(填充一些數據)的小型WPF應用程序(原型,概念驗證),並追蹤該電子郵件後來回覆(對話追蹤)。 直到項目被髮送後,對話ID纔可用。Outlook Interop,如何跟蹤EntryId變化

我面臨的問題是,當物品被創建並最初保存 - 它有一個EntryId,但是當物品被髮送時,它被移動到另一個文件夾(並且萬一如果有多個賬號,發送的文件夾可以與OlDefaultSent文件夾不同),當它移動到Exchange帳戶的另一個文件夾時,其EntryId被更改,因此我放棄了它的跟蹤。

問題是 - 如何跟蹤移動到不同文件夾時創建的項目(意味着EntryID也會更改)?

這裏的第二個問題可以是 - 如果我的應用程序在EntryId發生變化時關閉了,我怎麼能找到我的項目?

回答

0

您可以跟蹤PR_SEARCH_KEY MAPI屬性(DASL名稱http://schemas.microsoft.com/mapi/proptag/0x300B0102) - 郵件在文件夾之間移動時不會更改。您可以使用MailItem.PropertyAccessor.GetProperty檢索屬性,但Outlook對象模型不會讓您在二進制屬性上搜索(Items.Find),您需要Extended MAPI(C++或Delphi)或Redemption

+0

嗨,謝謝你的回答。我試圖跟蹤這個屬性,並在我調用MailItem.Save()後的那一刻我可以看到搜索鍵是類似「6E9BB ...」(十六進制數字),但是當電子郵件被髮送並移動到發送的項目文件夾,我會瀏覽其中的所有郵件,其搜索關鍵字不同,如「65066550 ..」(十進制數字)。我在你的解決方案中遺漏了什麼? – DarkDeny

+0

和搜索關鍵字的長度是不同的,在發送它之前是31個字符,後來在發送的項目文件夾長度是54個字符,如果這給你任何線索... – DarkDeny

+0

你如何訪問該屬性?您是否使用OutlookSpy查看該項目(單擊IMessage)?我從來沒有見過這個屬性只有16個字節。 –