1

我正在尝试使用 Outlook Rest Api 的 beta 版本同步 Outlook 文件夹(比如收件箱),请参阅此处的文档

我只需要检索属性IsReadPR_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相同。

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

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

响应将包含一个 Preference-Applied: odata.track-changes 标头。如果您尝试同步不受支持的资源,则不会在响应中返回此标头。在处理响应之前检查此标头以避免错误。

似乎对于 2. 和 3. 调用此响应标头“Preference-Applied”未设置。

4

1 回答 1

1

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

编辑: 对于 PR_INTERNETMESSAGE_ID 的非常特殊情况的解决方法,请查看下面的评论。

于 2016-05-03T17:18:09.430 回答