我正在使用从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。如何获取发件人使用的别名?
答案 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());