oauth2.0 从outlook读取电子邮件-XML问题

mwkjh3gx  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(256)

我正在尝试连接到outlook在线和下载一些电子邮件与预定义的条件。
在浏览器中,当我转到https://outlook.office.com/mail/并使用特定的电子邮件和密码登录时,我可以看到所有邮件。
我有C#控制台应用程序,应该连接,搜索和电子邮件操作。

public void EmailReceiver()
    {
        try
        {
            ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
            exchangeService.Credentials = new NetworkCredential("username", "pass");
            exchangeService.Url = new Uri("https://outlook.office.com/mail/");

            var inbox = Folder.Bind(exchangeService, WellKnownFolderName.Inbox);

            var sf1 = new SearchFilter.ContainsSubstring(EmailMessageSchema.From, "searchMail");

            SearchFilter.SearchFilterCollection searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.Or);

            searchFilterCollection.Add(sf1);

            var view = new ItemView(1000);

            var findResults = service.FindItems(WellKnownFolderName.Inbox, searchFilterCollection, view);

            return;

            //foreach (Item item in findResults)
            //{
            //    GetAttachmentsFromEmail(item.Id);
            //}
        }

        catch (Exception ex)
        {
            throw;
        }
    }

但无法连接到outlook

有什么建议吗?

pgx2nnw8

pgx2nnw81#

Office 365不再允许基本身份验证,你需要切换到OAuth2。你仍然可以允许基本身份验证,但必须在Exchange管理控制台中为租户显式执行此操作。但即使在这种情况下,你也需要使用WebCredentials类,而不是NetworkCredential。如果是OAuth,则需要OAuthCredentials类。
您可能还希望将TraceEnabled属性设置为true并提供类(将其分配给TraceListener属性)以记录所有EWS调用。

exchangeService.TraceEnabled = true;
exchangeService.TraceListener = new MyTraceListener(this);
exchangeService.TraceFlags = TraceFlags.All;

相关问题