Office365 如何抓取用户';s使用Graph SDK设置邮箱

Office365 如何抓取用户';s使用Graph SDK设置邮箱,office365,microsoft-graph-api,microsoft-graph-sdks,Office365,Microsoft Graph Api,Microsoft Graph Sdks,我在使用c#应用程序中的Graph客户端库获取这些数据时遇到了问题。我知道数据是可用的使用这个 我已经创建了我的azure应用程序,并提供了应用程序“读取所有用户邮箱设置”权限,然后单击“授予权限”应用它们。问题不在于我的身份验证。我能够检索数据 MicrosoftAuthenticationProvider authProvider = new MicrosoftAuthenticationProvider(applicationID, applicationSecret, micr

我在使用c#应用程序中的Graph客户端库获取这些数据时遇到了问题。我知道数据是可用的使用这个

我已经创建了我的azure应用程序,并提供了应用程序“读取所有用户邮箱设置”权限,然后单击“授予权限”应用它们。问题不在于我的身份验证。我能够检索数据

MicrosoftAuthenticationProvider authProvider = 
    new MicrosoftAuthenticationProvider(applicationID, applicationSecret, microsoftURL);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
IGraphServiceUsersCollectionPage users = await graphClient.Users.Request().GetAsync();
foreach (User user in users)
{
    //user.MailboxSettings
    //returns null, but through intellisense, I can obtain it's attributes
    //Microsoft.Graph.MailboxSettings is available in the library's object browser

    //graphClient.Users[user.UserPrincipalName].MailboxSettings.Request().GetAsync() 
    //User.MailboxSettings is not available
}
作为最后手段,我将使用REST API,但如果可以,我只想使用库。

只需将选择(“MailboxSettings”)附加到查询中即可

根据您的代码获取用户的邮箱设置

                IGraphServiceUsersCollectionPage users = await 
                    graphClient.Users.Request().GetAsync();

                foreach (User user in users)
                {
                    User fullUser = await graphClient.Users[user.UserPrincipalName].Request().Select("MailboxSettings").GetAsync();

                    MailboxSettings mailboxSettings1 = fullUser.MailboxSettings;                     
                }

好的,谢谢!成功了!我是新手,没有意识到有“选择”功能。这是基于我用于消息的命令,该命令是
iusermessagescolectionpage messages=wait graphClient.Users[user.UserPrincipalName].messages.Request().GetAsync()我需要检索用户的时区。通过执行您指定的操作,timezone属性将为空,如图中所示。你能给我一个从mailboxsettings获取时区属性的解决方案吗?@SoufienHajji我正在获取时区信息。您可以检查AdditionalData属性吗?有时,由于某种原因未对数据进行分析时,数据会存储在AdditionaData集合中。我在AdditionalData.ResponseHeaders.Value.ResultsView中找到了一个名为{[Date,[“Tue,2018年11月13日08:17:56 GMT”]}的内容,这是否表示时区中应该包含的内容?或表示查询的日期?并非所有邮箱都会填写时区,尤其是在无人登录的情况下。我必须对此作出解释<代码>用户用户=等待图形客户端。用户[id]。请求()。选择(“MailboxSettings”).GetAsync();if(user.MailboxSettings==null | | user.MailboxSettings.TimeZone==null)返回null;否则返回user.MailboxSettings.TimeZone