Outlook rest api "synchronize messages" 在后续调用中忽略 $expand
Outlook rest api "synchronize messages" ignores $expand in subsequent calls
我正在尝试使用 Outlook Rest 的测试版同步 Outlook 文件夹(比如收件箱)Api see doc here
我只需要检索 属性 IsRead 和 PR_INTERNET_MESSAGE_ID
所以按照文档,对于第一次同步,我的请求如下所示:
始终添加以下 Http header:
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 的列表(不是每个项目的项目)?
另请注意,在文档中写道:
The response will include a Preference-Applied: odata.track-changes
header. If you attempt to sync a resource that is not supported, this
header will not be returned in the response. Check for this header
before processing the response to avoid errors.
似乎对于 2. 和 3. 调用此响应 header "Preference-Applied" 未设置。
今天的同步功能不支持扩展属性。但是,我们正在努力实现这一点,它应该会在几周内开始工作。
编辑:
有关 PR_INTERNETMESSAGE_ID 非常特殊情况的解决方法,请查看下面的评论。
我正在尝试使用 Outlook Rest 的测试版同步 Outlook 文件夹(比如收件箱)Api see doc here
我只需要检索 属性 IsRead 和 PR_INTERNET_MESSAGE_ID
所以按照文档,对于第一次同步,我的请求如下所示:
始终添加以下 Http header:
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 的列表(不是每个项目的项目)?
另请注意,在文档中写道:
The response will include a Preference-Applied: odata.track-changes header. If you attempt to sync a resource that is not supported, this header will not be returned in the response. Check for this header before processing the response to avoid errors.
似乎对于 2. 和 3. 调用此响应 header "Preference-Applied" 未设置。
今天的同步功能不支持扩展属性。但是,我们正在努力实现这一点,它应该会在几周内开始工作。
编辑: 有关 PR_INTERNETMESSAGE_ID 非常特殊情况的解决方法,请查看下面的评论。