Office365 通过Outlook REST API获取附加邮件上的附件

Office365 通过Outlook REST API获取附加邮件上的附件,office365,outlook-restapi,Office365,Outlook Restapi,如果我的邮箱中有带有.eml(即message/rfc822)附件的邮件,则返回带有单个项目附件的邮件。该ItemAttachment封装了表示所附邮件的Microsoft.OutlookServices.Message。附加的消息对象具有空的Id,因此我们无法直接获取它。但是,如果我们想获取其中一个附件的内容,该怎么办 Message in Inbox \--> Attachments \--> ItemAttachment \--> Item

如果我的邮箱中有带有.eml(即message/rfc822)附件的邮件,则返回带有单个
项目附件的邮件。该
ItemAttachment
封装了表示所附邮件的
Microsoft.OutlookServices.Message
。附加的
消息
对象具有空的
Id
,因此我们无法直接获取它。但是,如果我们想获取其中一个附件的内容,该怎么办

Message in Inbox
  \--> Attachments
     \--> ItemAttachment
        \--> Item
           \--> Attachments
              \--> FileAttachment    <-- (want the content of this)
收件箱中的邮件
\-->附件
\-->项目附件
\-->项目
\-->附件

\-->FileAttachment目前,Outlook REST API不支持从邮件的(文件/项目)附件获取附件。但是,基于您在帖子中提供的内容,MSFT似乎已经考虑添加这个特性。 在您的场景中,您希望从消息a(.eml格式)获取附件,这是消息b的附件。“.eml”附件实际上是一个文件附件,而不是项目附件。这意味着当我们尝试使用下面的其余部分展开它时,它将失败事件:

GET: https://outlook.office.com/api/v2.0/me/MailFolders/Inbox/messages/{messageID}/attachments/{attachmentId}?$expand=Microsoft.OutlookServices.ItemAttachment/Item
它只返回与我们直接获取附件相同的结果,如下所示:

作为一种解决方法,我们可以将附件的内容字节保存到临时文件,并使用其他库从“.eml”文件检索附件

关于“RequestBroker ParseUri”的错误,您是否在@odata.id中有消息段?@odata.id的正确格式如下:

@odata.id=('username@tenant.onmicrosoft.com')/消息(AAAAFFtq…JFAAA=)/Attachments(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
答复:


然后,我们可以通过“ContentBytes”直接获取文件附件的内容。

我非常乐意获得一个文件附件并自己解析它。这些病例非常罕见,这不成问题。但我没有收到文件附件。我正在使用beta API,并获得
“@odata.type”:“#Microsoft.OutlookServices.ItemAttachment”,“@odata.id”:https://outlook.office.com/api/beta/Users('1985bb55-77bd-4936-868d-a1606dc735ff@3913f5a2-37a8-4451-b57b-ef37f0b2a1fa')/Messages('AAMkAGQ3MzU1YTc2L…')/Attachments('AAMkAGQ3MzU…'))”
感谢您的更正。在使用测试版API之后,我将能够获得“eml”附件作为项目附件,并且可以按照您在下面描述的那样重现问题文件附件返回错误的id。在这个场景中,我们可以展开原始消息的附件,以获取项目附件的文件附件的内容。我更新了上述建议。