Microsoft Graph API SDK .NET 获取其他用户电子邮件的问题
Microsoft Graph API SDK .NET Issues getting other users emails
我正在使用从 NuGet (1.2) 下载的 Microsoft Graph SDK。我向 Azure AD 进行身份验证(使用 ADAL)。
我正在使用客户端凭据流(未作为任何特定用户进行身份验证)并正在使用应用程序权限角色来访问资源。
我们将使用一堆别名设置一个服务邮箱。别名是给客户的。这样他们就可以通过电子邮件发送一个对他们来说具有有意义的名称的地址。
我的应用程序将 运行 作为一项服务,并定期扫描此收件箱中的新电子邮件。它应该找到收件人地址,并根据使用的别名,将电子邮件归档到与该客户相关的位置。
我要的资源是:GET /users/<id | userPrincipalName>/messages
但是,SDK 中似乎没有相应的方法。
我可以用这个获得用户:
IGraphServiceUsersCollectionPage filteredUsers =
graphApi.Users.Request()
.Filter("userPrincipalName eq 'user@domain.com'")
.GetAsync().Result;
当我遍历集合时,我可以看到用户有一个 'Messages' 属性,但它始终为空。
如果我使用 HttpClient 手动构建请求消息,我可以获得消息。
第二个问题是收件人属性始终是邮箱的userPrincipalName。如何获取发件人使用的别名?
虽然您能够成功获得 collection 用户,但您必须再次请求接收消息。这看起来像:
IUserMessagesCollectionPage userMessages =
graphApi.Users["user_id"].Messages.Request()
.GetAsync().Result;
回答您的第二个问题,目前您无法通过 Graph API 访问原始收件人,但您可以 通过 EWS 执行此操作。这是因为您只能通过 EWS 检索 SMTP 消息 headers。您可以阅读有关如何执行此操作的更多信息 here。
如果您认为这在图表中对您有价值,我鼓励您在我们的 UserVoice.
中 post
如果您想将电子邮件作为文件获取,只需通过 SDK 将 body 作为字节获取即可:
byte[] asBytes = Encoding.Unicode.GetBytes(message.Body.ToString());
我正在使用从 NuGet (1.2) 下载的 Microsoft Graph SDK。我向 Azure AD 进行身份验证(使用 ADAL)。
我正在使用客户端凭据流(未作为任何特定用户进行身份验证)并正在使用应用程序权限角色来访问资源。
我们将使用一堆别名设置一个服务邮箱。别名是给客户的。这样他们就可以通过电子邮件发送一个对他们来说具有有意义的名称的地址。
我的应用程序将 运行 作为一项服务,并定期扫描此收件箱中的新电子邮件。它应该找到收件人地址,并根据使用的别名,将电子邮件归档到与该客户相关的位置。
我要的资源是:GET /users/<id | userPrincipalName>/messages
但是,SDK 中似乎没有相应的方法。
我可以用这个获得用户:
IGraphServiceUsersCollectionPage filteredUsers =
graphApi.Users.Request()
.Filter("userPrincipalName eq 'user@domain.com'")
.GetAsync().Result;
当我遍历集合时,我可以看到用户有一个 'Messages' 属性,但它始终为空。
如果我使用 HttpClient 手动构建请求消息,我可以获得消息。
第二个问题是收件人属性始终是邮箱的userPrincipalName。如何获取发件人使用的别名?
虽然您能够成功获得 collection 用户,但您必须再次请求接收消息。这看起来像:
IUserMessagesCollectionPage userMessages =
graphApi.Users["user_id"].Messages.Request()
.GetAsync().Result;
回答您的第二个问题,目前您无法通过 Graph API 访问原始收件人,但您可以 通过 EWS 执行此操作。这是因为您只能通过 EWS 检索 SMTP 消息 headers。您可以阅读有关如何执行此操作的更多信息 here。
如果您认为这在图表中对您有价值,我鼓励您在我们的 UserVoice.
中 post如果您想将电子邮件作为文件获取,只需通过 SDK 将 body 作为字节获取即可:
byte[] asBytes = Encoding.Unicode.GetBytes(message.Body.ToString());