Outlook rest api"同步消息"忽略后续调用中的$ expand

时间:2016-05-03 16:23:21

标签: rest office365api outlook-restapi office365-restapi

我正在尝试使用Outlook Rest Api see doc here的测试版同步Outlook文件夹(比如收件箱)

我只需要检索属性 IsRead PR_INTERNET_MESSAGE_ID

以下文档中,对于第一次同步,我的请求如下:

始终添加以下Http标头:

  request.Headers.Add("Prefer", "odata.track-changes");
  request.Headers.Add("Prefer", "odata.maxpagesize=5"); //Use a small page size easier for debugging
  1. 第一个初始完整同步请求

    https://outlook.office365.com/api/beta/Me/MailFolders('inbox')/messages?$select=IsRead&$expand=SingleValueExtendedProperties($filter=(PropertyId eq 'String 0x1035'))

    效果不错 value数组包含我需要的内容。

  2. 第一个请求后的第二个请求使用 deltatoken

    https://outlook.office365.com/api/beta/Me/MailFolders('inbox')/messages?$select=IsRead,Subject&$expand=SingleValueExtendedProperties($filter=(PropertyId eq 'String 0x1035'))&$deltatoken=a758b90491954a61ad463ef3a0e690a2

    结果不佳,没有SingleValueExtendedProperties条目

  3. 接下来要求使用 skiptoken ...

    进行分页

    https://outlook.office365.com/api/beta/Me/MailFolders('inbox')/messages?$select=IsRead,Subject&$expand=SingleValueExtendedProperties($filter=(PropertyId eq 'String 0x1035'))&$skiptoken=e99ad10324464488b6b219ca5ed6be1c

    再次

    结果不佳,与2相同。

  4. 对我来说这看起来像个错误。你能提供一个解决方法吗?从 ItemId 列表中可以轻松检索到相应 PR_InternetMessage_Id 的列表(不是每个项目的项目)?

    另请注意,在文档中写道:

      

    响应将包括Preference-Applied:odata.track-changes   头。如果您尝试同步不受支持的资源,请执行此操作   标题不会在响应中返回。检查此标题   在处理响应之前避免错误。

    似乎对于2.和3.调用此响应标题" Preference-Applied"没有设定。

1 个答案:

答案 0 :(得分:1)

今天的同步功能不支持扩展属性。但是,我们正在努力实现这一目标,并应在几周内开始工作。

修改 有关PR_INTERNETMESSAGE_ID特殊情况的解决方法,请查看下面的注释。