我正在尝试使用ExchangeService
读取Office 365邮箱中的所有收件箱电子邮件。
对于这个,I:
- 在我的AzureAD门户中创建了一个应用程序
- 在我的代码中使用这个应用程序的访问秘密。
代码工作到I成功获取令牌,但是当尝试获取文件夹项时,我得到一个403错误:
'请求失败。远程服务器返回一个错误:(403)禁止。">
我从我的dev和prod环境中得到这个错误,所以我很确定这不是网络或端口问题。
下面是我的代码:
var cca = ConfidentialClientApplicationBuilder
.Create("myApplicationId")
.WithClientSecret("myClientSecret")
.WithTenantId("myTenantId")
.Build();
var ewsScopes = new string[] { "https://outlook.office365.com/.default" };
// This is where I get the token
var authResult = await cca.AcquireTokenForClient(ewsScopes).ExecuteAsync();
var ewsClient = new ExchangeService();
ewsClient.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
ewsClient.Credentials = new OAuthCredentials(authResult.AccessToken);
ewsClient.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "my@mail.box");
ewsClient.HttpHeaders.Add("X-AnchorMailbox", "my@mail.box");
// This is where I get the 403 error:
var items = ewsClient.FindItems(
new FolderId(WellKnownFolderName.Inbox, new Mailbox("my@mail.box")),
new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter[] {}
),
new ItemView(15)
);
403,如果从Office365返回,听起来像是他们在您试图访问的邮箱上禁用了EWS,或者他们限制了允许连接的客户端,例如https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-control-access-to-ews-in-exchange。您可以通过EWSeditor https://github.com/dseph/EwsEditor
使用用户帐户尝试测试EWS本身。