2017-02-14 68 views
2

是否有官方支持的方式將項目ID從Outlook REST API轉換爲MAPI EntryID?將Outlook REST API項目ID轉換爲MAPI EntryID

我說的是「ID」字段中的HTTP GET的郵箱上端點的JSON響應,像這樣退回的項目:

https://outlook.office365.com/api/v2.0/me/messages

Id字段包含一個base64值。當我將其轉換爲十六進制並將其與同一項目的PR_ENTRY_ID值進行比較時,例如與MFCMAPI,我可以找到EntryID包含在Id字段的十六進制版本中。

是否有官方文檔如何轉換ID格式?

還是需要調用一個API?寧願本地轉換功能,以避免額外的REST往返。

感謝任何提示 SvenC

回答

0

是那裏項ID從Outlook REST API轉換爲MAPI的EntryID官方支持的方式?

沒有,office.js API沒有任何關係轉換REST/EWS id來PR_ENTRY_ID

是否有正式文件如何將ID格式之間進行轉換?

顯然沒有文檔作爲點以上

或API調用的?寧願本地轉換功能以避免額外的REST往返。

是的,有調用檢索(而不是轉換)IMessage ID,這正是你所做的...... RESTful或EWS請求。通過這些請求,您可以獲得IMessage屬性,包括PR_ENTRY_ID。我只是不太明白你要用它做什麼?無論如何,任何返回消息的請求都必須使用EWS/REST ID完成。那麼,這可能與你的消息操縱有關。

+0

我明白了。那麼,除了用EWS或REST請求它併發送給你的服務之外,你沒有什麼可以幫你的。實際上,我第一次遇到使用這種方法的人。你介意告訴我你的服務有什麼樣的工作嗎?因爲,如果這不是商業祕密。我猜它在通過加載項設置的消息中尋找一些屬性,並根據它對此消息做些什麼?也是可靠的,併爲每一條消息工作?你有這種服務打嗝嗎?我將非常感激。 –

+0

上下文是一個郵件應用程序,它(粗略地)將EntryID作爲email-body發送到受監視的服務器郵箱。基於MAPI的服務獲取該EntryID並處理該項目。通過EWS,我們可以通過proptag獲得MAPI屬性。找不到REST,但Id值看起來幾乎可用。您是否有詳細信息可以通過REST獲取PR_ENTRY_ID?我使用查詢參數$ expand [link](https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations)發現了一個很有前途的語法。似乎在Exchange 2016 On-Prem(自2016年12月安裝的最新CU4)中缺失,它響應v2.0 REST呼叫。 – SvenC

+0

抱歉 - 按希望換行併發送不完整的評論 - 刪除並重新閱讀評論。也許Ex2016的On-Prem REST API確實比Office365低 – SvenC

3

您對Microsoft Graph API的查詢可以指定您希望包含PR_ENTRYID或其他MAPI屬性。這裏是來自微軟的singleValueLegacyExtendedPropertyofficial documentation

例如,如果你想獲取郵件的頁面,包括PR_ENTRYID,你可以做一個GET要求:

https://graph.microsoft.com/v1.0/me/messages?$expand=singleValueExtendedProperties($filter=id%20eq%20'Binary%200x0FFF')

沒有URL編碼,該$expand聲明全文: $expand=singleValueExtendedProperties($filter=id eq 'Binary 0x0FFF')

有三種有效的語法來MAPI屬性進行過濾:

  1. 'MapiPropertyType namespaceGuid Name propertyName'
  2. 'MapiPropertyType namespaceGuid Id propertyId'
  3. 'MapiPropertyType propertyTag'

注意,上面的示例使用#3,而0x0FFF是propertyTagPR_ENTRYID[MS-OXPROPS] Exchange Server Protocols Master Property List