批次載入使用者的電子郵件

已完成

您建立 ASP.NET Core 應用程式,將應用程式連線到 Microsoft 365,然後使用 Microsoft Graph 顯示使用者最後 10 封電子郵件。 現在讓我們擴充應用程式,讓使用者可以分批載入 10 個電子郵件。

使用 Microsoft Graph 來擷取頁面資料

當您呼叫會返回資料集合的 Microsoft Graph API 時,您會接收到儲存在 Microsoft 365 中的資料子集。 若要驗證是否有更多資料可供應用程式擷取,請檢查回應是否包含下一頁要求值。 可以使用回應物件的 NextPageRequest 屬性存取此值,如 GetNextLink() 方法所示:

private string GetNextLink(IUserMessagesCollectionPage pagedMessages) {
  if (pagedMessages.NextPageRequest != null)
  {
    // Get the URL for the next batch of records
    return pagedMessages.NextPageRequest.GetHttpRequestMessage().RequestUri?.OriginalString;
  }
  return null;
}

pagedMessages.NextPageRequest.GetHttpRequestMessage() 的呼叫退回可供您呼叫以擷取下一頁結果的完整的URL。 初始要求中的所有設定資料都將被保留,包括要擷取的屬性、如何對資料進行排序以及要取得的項目數量。

要載入下一批次的資料,請將從 GetNextLink() 方法傳回的 URL 與 GraphServiceClient 執行個體一起傳遞給 UserMessagesCollectionRequest 物件:

// Use the next page request URI value to get the page of messages
var messagesCollectionRequest = new UserMessagesCollectionRequest(nextPageLink, _graphServiceClient, null);
pagedMessages = await messagesCollectionRequest.GetAsync();

擷取結果的第二頁後,可以透過呼叫 GetNextLink() 方法查看是否有更多資料可用。

注意

Microsoft Graph 遵循 OData 4 標準。 標準的一部分是能夠使用 $top$skip 參數 (Microsoft Graph SDK 中的 TopSkip 方法) 的組合來擷取特定資料頁面。 使用電子郵件時無法這樣做,因為電子郵件資料夾可能包含會影響分頁的電子郵件資料。 這就是為什麼在處理電子郵件時,您應該始終使用先前顯示的技術來載入更多資料。

後續步驟

讓我們擴充應用程式,讓使用者分批載入更多電子郵件。