代码之家  ›  专栏  ›  技术社区  ›  K.Z

如何在.NET应用程序中使用Microsoft Graph访问共享邮件文件夹

  •  0
  • K.Z  · 技术社区  · 6 年前

    public static async Task<IEnumerable<MailFolder>> GetMailFolderAsync()
    {
        var graphClient = GetAuthenticatedClient();
        var mailFolder = await graphClient.Me.MailFolders.Request().GetAsync();
        var sharedMailFolder = await graphClient.Users.Request().GetAsync();
        return mailFolder;
    }
    

    另外,我想知道在上面的代码中,我可以在哪里传递参数来访问下一页或所有页??

    private static GraphServiceClient GetAuthenticatedClient()
        {
            return new GraphServiceClient(
                new DelegateAuthenticationProvider(
                    async (requestMessage) =>
                    {
                        string signedInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
                        SessionTokenStore tokenStore = new SessionTokenStore(signedInUserId,
                            new HttpContextWrapper(HttpContext.Current));
    
                        var idClient = new ConfidentialClientApplication(
                            appId, redirectUri, new ClientCredential(appSecret),
                            tokenStore.GetMsalCacheInstance(), null);
    
                        var accounts = await idClient.GetAccountsAsync();
    
                        var result = await idClient.AcquireTokenSilentAsync(
                            graphScopes.Split(' '), accounts.FirstOrDefault());
    
                        requestMessage.Headers.Authorization =
                            new AuthenticationHeaderValue("Bearer", result.AccessToken);
                    }));
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   El maik    5 年前

    我想也不可能访问我正在调查的共享文件夹。关于获取页面的问题,只要您收到第一个请求

    public static async Task<IEnumerable<MailFolder>> GetMailFolderAsync()
    {
        var graphClient = GetAuthenticatedClient();
        var mailFolder = await graphClient.Me.MailFolders.Request().GetAsync();
        var sharedMailFolder = await graphClient.Users.Request().GetAsync();
        return mailFolder;
    }
    

    然后您可以查看例如mailFolder.NextPageRequest,如果它不为空,那么您可以通过执行mailFolder.NextPageRequest.GetAsync()来请求它,并且可以将它用作循环条件

    while(mailfoldersCollection != null) {
    // Do your stuff with items within for(var folder in mailfoldersCollection) {}
    // when read all items in CurrentPage then
    if (mailFolder.NextPageRequest != null) {
    mailfoldersCollection = await mailFolder.NextPageRequest.GetAsync();
    }