从Outlook收件箱读取邮件时,基本身份验证无法正常工作



有一个遗留应用程序在后台运行,用于将新邮件从邮箱拉到数据库。代码看起来像这个

ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
exchangeService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

exchangeService.Credentials = new NetworkCredential("mail@domain.com","mailpassword", "");
PropertySet ItemPropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
ItemPropertySet.RequestedBodyType = BodyType.Text;
ItemView itemView = new ItemView(10);
itemView.PropertySet = ItemPropertySet;
FindItemsResults<Item> Emails = exchangeService.FindItems(WellKnownFolderName.Inbox,
new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter[]{
new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false)
}),
itemView);

这段代码运行良好,但在过去几天里,我在执行FindItems 时出错

11/10/2022 03:55:00 - ERROR WITH INBOUND EMAIL TASK TASK: The request failed. The remote server returned an error: (401) Unauthorized.
Microsoft.Exchange.WebServices
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request) in \REDMONDEXCHANGEBUILDE1515.00.0913.015SOURCESsourcesdevEwsManagedApisrcEwsManagedApiCoreRequestsServiceRequestBase.cs:line 831
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) in \REDMONDEXCHANGEBUILDE1515.00.0913.015SOURCESsourcesdevEwsManagedApisrcEwsManagedApiCoreRequestsServiceRequestBase.cs:line 724
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() in \REDMONDEXCHANGEBUILDE1515.00.0913.015SOURCESsourcesdevEwsManagedApisrcEwsManagedApiCoreRequestsMultiResponseServiceRequest.cs:line 157
at Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems[TItem](IEnumerable`1 parentFolderIds, SearchFilter searchFilter, String queryString, ViewBase view, Grouping groupBy, ServiceErrorHandling errorHandlingMode) in \REDMONDEXCHANGEBUILDE1515.00.0913.015SOURCESsourcesdevEwsManagedApisrcEwsManagedApiCoreExchangeService.cs:line 832
at Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems(FolderId parentFolderId, SearchFilter searchFilter, ViewBase view) in \REDMONDEXCHANGEBUILDE1515.00.0913.015SOURCESsourcesdevEwsManagedApisrcEwsManagedApiCoreExchangeService.cs:line 937
at Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems(WellKnownFolderName parentFolderName, SearchFilter searchFilter, ViewBase view) in \REDMONDEXCHANGEBUILDE1515.00.0913.015SOURCESsourcesdevEwsManagedApisrcEwsManagedApiCoreExchangeService.cs:line 990

我来看看Mirosoft关于Exchange Online 中基本身份验证(基本身份验证(被弃用的官方公告

https://learn.microsoft.com/en-us/lifecycle/announcements/basic-auth-deprecation-exchange-online

那么,我们如何更新此代码以再次阅读电子邮件呢?

那么我们如何更新此代码以再次读取电子邮件呢?

您有以下选项:

  1. 如果您需要更多时间来更新代码,您可以请求一次性重新启用。这将重新激活基本身份验证,直到2022年12月。

  2. 重写应用程序以使用OAuth而不是基本身份验证。你可以在这里找到微软的官方分步说明,包括示例代码:

    • 使用OAuth对EWS应用程序进行身份验证
  3. 不过,请注意,EWS不会获得功能更新,因此您可能希望利用此机会将您的应用程序迁移到MS Graph:

    • 使用Outlook邮件REST API

最新更新