2016-06-08 94 views
2

如果我的郵箱中有一個帶有.eml(即message/rfc822)附件的郵件,fetching the message via the REST API會返回帶有單個ItemAttachment的郵件。 ItemAttachment封裝了代表附加消息的Microsoft.OutlookServices.Message。附加的Message對象的空值爲Id,因此我們無法直接獲取它。但是如果我們想要獲取其中一個附件的內容呢?通過Outlook REST API獲取連接郵件上的附件

Message in Inbox 
    \--> Attachments 
    \--> ItemAttachment 
     \--> Item 
      \--> Attachments 
       \--> FileAttachment <-- (want the content of this) 

這第二級FileAttachment的具有的@odata.id

https://outlook.office.com/api/beta/Users('[email protected]7f0b2a1fa')/('')/Attachments('AAMkAGQ3MzU1BBc2LWFjNTItNDk4Mi1iZTdlLTM3NGM0NzY5NTNmYgBGAAAAAACI4ZQOxnCPTpOe8P6IYO9gBwA_fgVM0BybQ5W_noJvz6hgAAAAAAEMAAA_fgVM0BybQ5W_noJvz6hgAAB2hYE9AAACEgAQAA_BBM8zEqJPrcr4BJ-cOyUSABAAlLV-2suqwEGuRduQ43E9pg==')

但要獲取該對象會因爲缺少MESSAGE_ID路徑段的失敗,任何企圖:

{"error":{"code":"RequestBroker-ParseUri","message":"Empty segment encountered in request URL. Please make sure that a valid request URL is specified."}}

如何獲取該附件的內容?

回答

0

目前,Outlook REST API不支持從消息的(文件/項目)附件獲取附件。但是,根據您在帖子中提供的link,MSFT似乎已經考慮添加此功能。

而在你的場景中,你想從消息a(.eml格式)獲得附件,這是消息b的附件。 '.eml'附件實際上是文件附件而不是項目附件。這意味着它會失敗事件,當我們嘗試使用下面的REST將其展開:

GET: https://outlook.office.com/api/v2.0/me/MailFolders/Inbox/messages/{messageID}/attachments/{attachmentId}?$expand=Microsoft.OutlookServices.ItemAttachment/Item 

它只是返回相同的結果,因爲我們直接將附件如下圖所示: enter image description here

作爲一種變通方法,我們可能會將附件的內容字節保存到臨時文件,並使用其他庫從'.eml'文件中檢索附件。

而有關'RequestBroker-ParseUri'的錯誤,你有@ odata.id中的消息段嗎?正確的@ odata.id應該是這樣的:

@ odata.id = https://outlook.office.com/api/v1.0/Users( '用戶名@ tenant.onmicrosoft.com')/ 消息(AAAAFFtq ... JFAAA =') /附件( AAAA ... InxVMOHvBDM0 =')

更新

Message-> 
     Item attachment(eml)-> 
           File attachment 

要獲得一個項目的附件的文件附件的內容,我們可以使用下面的REST API展開項目附件:

GET: https://outlook.office.com/api/beta/me/mailfolders/inbox/messages/{messageId}/attachments?$expand=Microsoft.OutlookServices.ItemAttachment/Item 

響應: enter image description here

然後我們就可以直接通過「ContentBytes」獲得文件附件的內容。

+0

我會很高興得到一個FileAttachment並自己解析它。這些情況非常罕見,這不是問題。但我沒有收到FileAttachment。我正在使用測試版API,並且正在獲取'「@ odata.type」:「#Microsoft。OutlookServices.ItemAttachment「,」@ odata.id「:」https://outlook.office.com/api/beta/Users('[email protected]7f0b2a1fa' )/ Messages('AAMkAGQ3MzU1YTc2L ...')/ Attachments('AAMkAGQ3MzU ...')「' – dkarp

+0

感謝您的更正。使用Beta版API後,我可以將'eml'附件作爲項目附件可能會重現此問題,正如您在下面描述的文件附件ID返回錯誤 在這種情況下,我們可以擴展原始郵件的附件以獲取項目附件的文件附件的內容。 –

相關問題