Microsoft graph api Microsoft Graph API SDK.NET问题获取其他用户电子邮件

Microsoft graph api Microsoft Graph API SDK.NET问题获取其他用户电子邮件,microsoft-graph-api,azure-ad-graph-api,Microsoft Graph Api,Azure Ad Graph Api,我正在使用从NuGet(1.2)下载的Microsoft Graph SDK。我通过Azure AD认证(使用ADAL) 我使用客户端凭据流(未作为任何特定用户进行身份验证),并使用应用程序权限角色访问资源 我们将使用一组别名设置一个服务邮箱。别名将提供给客户端。这样,他们就可以通过电子邮件发送一个有意义的名称的地址 我的应用程序将作为服务运行,并定期扫描此收件箱中的新电子邮件。它应该找到收件人地址,并根据使用的别名,将电子邮件归档到与该客户机相关的位置 我想要的资源是:GET/users//m

我正在使用从NuGet(1.2)下载的Microsoft Graph SDK。我通过Azure AD认证(使用ADAL)

我使用客户端凭据流(未作为任何特定用户进行身份验证),并使用应用程序权限角色访问资源

我们将使用一组别名设置一个服务邮箱。别名将提供给客户端。这样,他们就可以通过电子邮件发送一个有意义的名称的地址

我的应用程序将作为服务运行,并定期扫描此收件箱中的新电子邮件。它应该找到收件人地址,并根据使用的别名,将电子邮件归档到与该客户机相关的位置

我想要的资源是:
GET/users//messages

但是,SDK中似乎没有针对它的方法

我可以通过以下方式获得用户:

IGraphServiceUsersCollectionPage filteredUsers = 
                   graphApi.Users.Request()
                                 .Filter("userPrincipalName eq 'user@domain.com'")
                                 .GetAsync().Result;
当我在集合中循环时,我可以看到用户有一个“Messages”属性,但它总是空的

如果我使用HttpClient手动构建请求消息,我可以获得消息


第二个问题是收件人属性始终是邮箱的userPrincipalName。如何获取发件人使用的别名?

当您能够成功获取用户集合时,您必须发出另一个请求才能接收邮件。这看起来像:

IUserMessagesCollectionPage userMessages = 
             graphApi.Users["user_id"].Messages.Request()
             .GetAsync().Result;
要回答第二个问题,此时您无法通过Graph API访问原始收件人,但可以通过EWS访问。这是因为您只能通过EWS检索SMTP邮件头。您可以阅读更多有关如何执行此操作的信息

如果这是你认为在图表中对你有价值的东西,我鼓励你把它发布在我们的网站上

如果您希望以文件形式获取电子邮件,只需通过SDK以字节形式获取正文:

byte[] asBytes = Encoding.Unicode.GetBytes(message.Body.ToString());

我可以从另一个用户那里看到这样的问题,以至于我无论如何都无法将电子邮件作为文件(或字节)来处理。所以我必须使用EWS。你也可以通过Azure AD授予的客户端凭据来使用EWS,但你需要使用X.509证书对客户端进行身份验证。谢谢Caitlin,我会将此标记为已回答,因为它解释了我问题的主要部分,即如何请求对我有效的用户消息。关于将消息作为文件获取,我需要将整个文件作为EML。我猜这是一个“导出”,我在这里找到了使用EWS的资源