【发布时间】:2020-01-18 11:22:01
【问题描述】:
我正在尝试获取用户可以代表其发送电子邮件的电子邮件地址列表。
这是一个代表用户发送电子邮件的应用程序,因此应用程序没有用户凭据。相反,应用程序在 Azure AD 中注册并拥有对 Office 365 Exchange Online 的完全权限。应用程序生成一个 JWT 令牌,它用于交换凭据,它工作正常,当前应用程序能够代表用户发送电子邮件。
User Email
A a@test.com
B b@test.com
C c@test.com
D d@test.com
如果用户 A 可以代表用户 B、C 和 D 发送电子邮件,我正在尝试获取用户 B、C、D 的电子邮件地址。因此,当前用户 A 已授予以 B、C 或 D 身份发送的权限。
我正在尝试下面的代码
var Service = new ExchangeService.ExchangeService(ExchangeVersion.Exchange2013);
Service.TraceFlags = ExchangeService.TraceFlags.None;
Service.HttpHeaders.Add("X-AnchorMailbox", "a@test.com");
Service.HttpHeaders.Add("X-PreferServerAffinity", "true");
Service.EnableScpLookup = false;
Service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
Service.Credentials = new ExchangeService.OAuthCredentials(token);
var result= Service.GetDelegates("a@test.com", true);
这现在给了我错误
ExchangeImpersonation SOAP header must be present for this type of OAuth token ErrorCode = ErrorInvalidExchangeImpersonationHeaderData
在here 中,它说这是当”调用者未指定 UPN、电子邮件地址或用户 SID。如果调用者指定了其中的一个或多个并且值为空”
但此令牌是应用程序唯一令牌,其中应用程序已在 azure 门户中授予 Office 365 Exchange Online 的完全权限。
不确定我是否正朝着正确的方向解决这个问题?替代方法或无论如何解决此问题
【问题讨论】:
标签: c# .net exchange-server exchangewebservices ews-managed-api