从 Outlook 收件箱读取邮件时基本身份验证不再有效

问题描述 投票:0回答:1

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

ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
exchangeService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
                 
exchangeService.Credentials = new NetworkCredential("[email protected]","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 \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\ServiceRequestBase.cs:line 831
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\ServiceRequestBase.cs:line 724
   at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\MultiResponseServiceRequest.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 \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:line 832
   at Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems(FolderId parentFolderId, SearchFilter searchFilter, ViewBase view) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:line 937
   at Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems(WellKnownFolderName parentFolderName, SearchFilter searchFilter, ViewBase view) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:line 990

我是来看Mirosoft官方关于Exchange Online弃用基本身份验证(Basic Auth)的公告

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

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

c# oauth-2.0 office365 exchange-server office365api
1个回答
1
投票

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

您有以下选择:

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

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

  3. 但请注意,EWS 不会获得功能更新,因此您可能想利用这个机会将应用程序迁移到 MS Graph:

© www.soinside.com 2019 - 2024. All rights reserved.