Microsoft Graph API SDK .NET问题让其他用户收到电子邮件

时间:2016-11-18 07:18:37

标签: microsoft-graph azure-ad-graph-api

我正在使用从NuGet(1.2)下载的Microsoft Graph SDK。我对Azure AD进行身份验证(使用ADAL)。

我正在使用客户端凭据流(未经过任何特定用户的身份验证),并且正在使用应用程序权限角色来访问资源。

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

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

我想要的资源是:GET /users/<id | userPrincipalName>/messages

然而,SDK似乎并不是一种方法。

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

IGraphServiceUsersCollectionPage filteredUsers = 
                   graphApi.Users.Request()
                                 .Filter("userPrincipalName eq 'user@domain.com'")
                                 .GetAsync().Result;

当我浏览集合时,我可以看到用户有一个&#39;消息&#39;属性,但它始终为null。

如果我使用HttpClient手动构建请求消息,我可以收到消息。

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

1 个答案:

答案 0 :(得分:3)

虽然您可以成功获得用户集合,但您必须另外请求接收消息。这看起来像是:

IUserMessagesCollectionPage userMessages = 
             graphApi.Users["user_id"].Messages.Request()
             .GetAsync().Result;

要回答第二个问题,此时您无法通过图谱API访问原始收件人,但可以通过EWS执行此操作。这是因为您只能通过EWS检索SMTP邮件头。您可以详细了解如何执行此操作here

如果这是您认为在图表中对您有价值的内容,我建议您将其发布在我们的UserVoice中。

如果您想将电子邮件作为文件获取,您可以通过SDK简单地将正文作为字节:

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