【问题标题】:Basic Authentication is not more working while reading mail from Outlook Inbox从 Outlook 收件箱读取邮件时,基本身份验证不再有效
【发布时间】:2022-10-22 00:45:21
【问题描述】:

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

    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 时遇到错误

2022 年 11 月 10 日 03:55:00 - 入站电子邮件任务任务错误:请求失败。远程服务器返回错误:(401) Unauthorized。 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& 请求):第 724 行 在 Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.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](IEnumerable1 parentFolderIds, SearchFilter searchFilter, String queryString, ViewBase view, Grouping groupBy, ServiceErrorHandling errorHandlingMode) 在 \REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev \EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:第 832 行 在 Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems(FolderId parentFolderId, SearchFilter searchFilter, ViewBase view) 在 \REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ ExchangeService.cs:第 937 行 在 Microsoft.Exchange.WebServices.Data.ExchangeService.FindItems(WellKnownFolderName parentFolderName, SearchFilter searchFilter, ViewBase view) 在 \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

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

【问题讨论】:

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


    【解决方案1】:

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

    您有以下选择:

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

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

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

    【讨论】:

      【解决方案2】:

      我对此还有一个问题。 阅读所有文档,似乎能够从邮箱读取的唯一方法是在 Azure 中设置和应用程序注册。
      那是对的吗? 真的没有其他方法可以让控制台应用程序从收件箱中读取邮件吗?

      【讨论】:

        猜你喜欢
        • 2022-11-21
        • 2020-05-30
        • 2013-01-02
        • 1970-01-01
        • 2014-05-20
        • 2012-11-27
        • 2018-10-24
        • 1970-01-01
        • 2011-10-14
        相关资源
        最近更新 更多