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

标签 c# oauth-2.0 office365 exchange-server office365api

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

    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 - 入站电子邮件任务任务出错:请求失败。远程服务器返回错误:(401) 未经授权。 Microsoft.Exchange.WebServices 在\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\ServiceRequestBase.cs 中的 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求): 831行 在\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\ServiceRequestBase.cs 中的 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request): 724行 在 Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.Execute() 在\\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\MultiResponseServiceRequest .cs:第 157 行位于 Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems[TItem](IEnumerable1 parentFolderIds, SearchFilter searchFilter, String queryString, ViewBase view, GroupBy, ServiceErrorHandling errorHandlingMode) in\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:第 832 行 在\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:第 937 行 在\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:第 990 行

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

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

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

最佳答案

So how can we update this code to read the emails again?

您有以下选择:

  1. 如果您需要更多时间来更新您的代码,您可以request a one-time re-enablement .这将在 2022 年 12 月之前重新激活基本身份验证。

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

  3. 不过请注意,EWS will not get feature updates ,因此您可能想利用这个机会将您的应用程序迁移到 MS Graph:

关于c# - 从 Outlook 收件箱读取邮件时,基本身份验证不再有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74039169/

相关文章:

C# 和 SQL LIKE 条件 : '%' works as single-character wildcard

heroku - 在 Heroku 上使用 Google 的 TextToSpeech API

oauth-2.0 - 如何在 js webapp 中为仅承载后端客户端获取 token

c# - 为什么.net framework 4.5安装后没有像之前版本一样更新注册表?

c# 在运行时在 Debug模式下显示设置值

c# - 更改@Html.EditorFor/自定义模板类 | ASP.NET MVC 4

java - 过滤或处理 OAuth2 中的 AuthenticationException

sql-server - 在 Visio 的组织结构图中刷新外部数据(来自 SQL Server)

powershell - 使用PowerShell将多个o365许可证分配给单个用户

office365 - 为什么我的 Mail App for Office 显示在 Outlook Online 中,但没有显示在我安装的 Outlook 客户端中?