使用REST API下载Outlook附件吗? [英] Downloading Outlook attachments with REST API?
问题描述
我正在处理与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}
,其中
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在本地保存此附件.此外,附件可以是ItemAttachments
或FileAttachments
.在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屋!