如何从作为Office 365 API预览一部分的Mail REST API返回所有元数据?
msdn文档似乎表示您发送一个值为“ application / json; odata.metadata = full ”的Accept标头,但这导致返回的属性数量有限并且不包括电子邮件的正文。
http://msdn.microsoft.com/en-us/library/office/dn605901(v=office.15).aspx
我也试过“ odata = verbose ”,结果相同。以下是在任何一种情况下返回的json:
{
"@odata.context":"",
"@odata.id":"",
"@odata.editLink":"",
"Id":"",
"Subject":"",
"DateTimeReceived":"",
"From":{},
"Attachments@odata.navigationLink":""
}
更新
REST端点: https://outlook.office365.com/ews/odata/Me/Inbox/Messages
Rohit Nagarmal的回答指出了我正确的方向。我有一个$ select查询参数中指定的字段列表,它覆盖了Accept标头的完整元数据设置。删除$ select查询后,返回完整的元数据。
答案 0 :(得分:4)
您可以分享您用来访问消息的网址吗? 如果您使用的是: https://outlook.office365.com/ews/odata/Me/Inbox/Messages 你应该在响应中看到Body属性。 您还可以使用$ select专门请求选择性属性。例如: ?https://outlook.office365.com/ews/odata/Me/Inbox/Messages $选择=主题,正文&安培; $顶部= 1
$ top可用于限制返回的商品数量。
如果指定了$ select,它将覆盖Accept =" odata.metadata = full"设置并将仅返回$ select查询中指定的字段。
答案 1 :(得分:0)
很可能这甚至都不在你的雷达上......但这对我有用。
public async void GetFolderMessagesList(string parentFolderId,OnFeedBackMessage onFeedBackMessage,OnErrorMessage onErrorMessage) { 尝试 {
jsonLastRun = "";
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get,
new Uri(("https://outlook.office365.com/api/v1.0/me/folders/{ChangeThisToFolder_id}/messages")));
// Add the Authorization header with the basic login credentials.
var auth = "Basic " +
Convert.ToBase64String(
Encoding.UTF8.GetBytes(UserAccount + ":" + PassWord));
request.Headers.Add("Accept", "application/json");
request.Headers.Add("Authorization", auth);
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
jsonLastRun = await response.Content.ReadAsStringAsync();
}
catch (Exception exception)
{
onErrorMessage?.Invoke("GetFolderList -> " + exception.Message);
}
}