我正在尝试使用 Outlook Rest Api 的 beta 版本同步 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
第一个初始完全同步请求
https://outlook.office365.com/api/beta/Me/MailFolders('inbox')/messages?$select=IsRead&$expand=SingleValueExtendedProperties($filter=(PropertyId eq 'String 0x1035'))
良好的结果
value
数组包含我需要的东西。第一个请求之后的第二个请求使用deltatoken
https://outlook.office365.com/api/beta/Me/MailFolders('inbox')/messages?$select=IsRead,Subject&$expand=SingleValueExtendedProperties($filter=(PropertyId eq 'String 0x1035'))&$deltatoken=a758b90491954a61ad463ef3a0e690a2
结果不好,没有 SingleValueExtendedProperties 条目
下一个使用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”未设置。