【问题标题】:Return all email metadata in Office 365 Mail REST API preview在 Office 365 Mail REST API 预览版中返回所有电子邮件元数据
【发布时间】:2015-10-21 00:58:52
【问题描述】:

如何从属于 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 查询,就会返回完整的元数据。

【问题讨论】:

    标签: ms-office odata exchangewebservices office365


    【解决方案1】:

    你能分享你用来访问消息的网址吗? 如果您正在使用类似的东西: https://outlook.office365.com/ews/odata/Me/Inbox/Messages 您应该在响应中看到 Body 属性。 您还可以使用 $select 专门请求选择性属性。例如: https://outlook.office365.com/ews/odata/Me/Inbox/Messages?$select=Subject,Body&$top=1

    $top 可用于限制返回的项目数。

    如果指定了 $select,它将覆盖 Accept="odata.metadata=full" 设置并仅返回 $select 查询中指定的字段。

    【讨论】:

      【解决方案2】:

      这很可能已经不在你的雷达范围内了..但这对我有用。

      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);
        }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-10
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多