Outlook Rest Api のベータ版を使用して 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
配列には必要なものが含まれています。最初のリクエストの後の 2 番目のリクエストはデルタトークンを使用します
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」が設定されていないようです。