使用REST API下载Outlook附件吗? [英] Downloading Outlook attachments with REST API?

查看:327
本文介绍了使用REST API下载Outlook附件吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理与Outlook Mail API相关的项目.我想下载电子邮件中的附件. 该文件表明,我可以获取"附件,并且它们在json响应中返回不同的参数,但我想知道我必须将哪个转换为附件,才能将实际的附件保存到文件系统中.

Im working on a project that is related to the Outlook Mail API. I want to download the attachments an email has. The documantation says that i can "get" the attachments, and they return different parameters in a json response, but im curious to know which one i have to convert to what, to get the actual attachment saved on to the filesystem.

http://msdn.microsoft.com/office/office365/api/mail-rest-operations#Getattachments

谢谢.

推荐答案

根据文档,https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments返回附件集合,其中包含各个附件的标识符:

As per the documentation, https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments returns a collection of attachments which contains an identifier for the individual attachment:

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages('AAMkAGI2THVSAAA%3D')/Attachments(Name)",
    "value": [
        {
            "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2THVSAAA=')/Attachments('AAMkAGI2j4kShdM=')",
            "Id": "AAMkAGI2j4kShdM=",
            "Name": "minutes.docx"
        }
    ] }

现在,您可以使用此API遍历此列表并获取单个附件-https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id},其中是从上述API返回的标识符.

Now, you can iterate through this list and fetch individual attachment using this API - https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id} where attachment_id is the identifier returned from above API.

响应将是:

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages('AAMkAGI2THVSAAA%3D')/Attachments/$entity",
    "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2THVSAAA=')/Attachments('AAMkAGI2j4kShdM=')",
    "Id": "AAMkAGI2j4kShdM=",
    "LastModifiedDateTime": "2014-10-20T00:41:52Z",
    "Name": "minutes.docx",
    "ContentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    "Size": 11585,
    "IsInline": false,
    "ContentId": null,
    "ContentLocation": null,
    "ContentBytes": "UEsDBBQABgAIAAAAIQDCAAA4KQAAAAA=" }

现在,您可以使用ContentBytes和contentType在本地保存此附件.此外,附件可以是ItemAttachmentsFileAttachments.在Google上搜索更多内容肯定会带您一些示例代码,其中显示了如何下载它们.但这应该可以给您一个想法.

Now, you can save this attachment locally using ContentBytes and contentType. Moreover, attachments could be ItemAttachments or FileAttachments. Searching more on Google will definitely lead you to some sample code which shows how to download them. But this should give you an idea.

您可以检查以下内容:

public static void GetAttachmentsFromEmail(ExchangeService service, ItemId itemId)
        {
            // Bind to an existing message item and retrieve the attachments collection.
            // This method results in an GetItem call to EWS.
            EmailMessage message = EmailMessage.Bind(service, itemId, new PropertySet(ItemSchema.Attachments));

            // Iterate through the attachments collection and load each attachment.
            foreach (Attachment attachment in message.Attachments)
            {
                if (attachment is FileAttachment)
                {
                    FileAttachment fileAttachment = attachment as FileAttachment;

                    // Load the attachment into a file.
                    // This call results in a GetAttachment call to EWS.
                    fileAttachment.Load("C:\\temp\\" + fileAttachment.Name);

                    Console.WriteLine("File attachment name: " + fileAttachment.Name);
                }
                else // Attachment is an item attachment.
                {
                    ItemAttachment itemAttachment = attachment as ItemAttachment;

                    // Load attachment into memory and write out the subject.
                    // This does not save the file like it does with a file attachment.
                    // This call results in a GetAttachment call to EWS.
                    itemAttachment.Load();

                    Console.WriteLine("Item attachment name: " + itemAttachment.Name);
                }
            }
        }

这篇关于使用REST API下载Outlook附件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆