2017-05-24 85 views
0

花了幾個小時試圖回答我的問題後,我決定是時候就SO提出問題了,因爲也許有人知道我可以從哪個MAPI屬性獲取此信息。如何在Outlook PlugIn(VSTO)中獲取原始(Exchange)文件夾UniqueID?

但讓我們從頭開始 - 我正在爲C#編寫Outlook 2013/2016的VSTO插件;在這個插件的某處,我得到我當前商店中的文件夾列表,並且一切正常 - 對於每個文件夾,我都有一個條目ID和其他屬性;我的大問題是 - 我怎樣才能得到一個文件夾或一個項目(電子郵件)該項目在服務器上的原始ID(對於使用EWS的人是文件夾FolderId.UniqueId) - 最有可能這個信息駐留在某處在可以使用PropertyAccessor訪問的MAPI隱藏屬性中。

從我迄今閱讀的內容來看,有幾千個MAPI屬性可用於Outlook項目/文件夾,但我不知道哪些是與Exchange相關的屬性。

非常感謝您的任何線索。

回答

0

您的意思是爲每個來自Exchange Server的項目使用唯一的ID,而不是來自本地Outlook應用程序。您可以考慮使用

的EntryID:https://msdn.microsoft.com/en-us/library/office/ff866458.aspx

我試圖離開評論,但公司的合併,我們搬到了一個新的領域,我有一個新的電子郵件地址,並在這裏一個新的ID,信譽從零開始再次!

+0

這是由Outlook中創建對象時被添加到存儲庫中條目的ID,這是不是有什麼我在找。我需要的是來自交換服務器的獨特之處。 – Edi

0

在獲取了一些其他帖子的線索後,似乎我所尋找的名稱是「將VSTO EntryID轉換爲EWS ID」(至少這是我搜索的:-)。

長話短說,我發現在多個網站上的解決方案,但正確的可以在這裏找到:

https://bernhardelbl.wordpress.com/2013/04/15/converting-entryid-to-ewsid-using-exchange-web-services-ews/

在幾句話,似乎這種操作是有點不同的,那麼我認爲這應該是 - 我尋找的EWS ID不在Outlook項目中;爲了得到它,你必須調用EWS,你會得到來自服務器的響應:

string ConvertHexEntryIdToEwsId(ExchangeService esb, string sID, string strSMTPAdd) 
{ 
AlternateId objAltID = new AlternateId(); 
objAltID.Format = IdFormat.HexEntryId; 
objAltID.Mailbox = strSMTPAdd; 
objAltID.UniqueId = sID; 

AlternateIdBase objAltIDBase = esb.ConvertId(objAltID, IdFormat.EwsId); 
AlternateId objAltIDResp = (AlternateId)objAltIDBase; 
return objAltIDResp.UniqueId; 
} 
相關問題