首页 > 解决方案 > 以最简单的方式使用 Microsoft Graph 查找电子邮件

问题描述

我有一个自动化.NET Framework项目Microsoft.Exchange.WebServicesoutlook.office365.com

最近我开始重写我的项目.NET Core,这带来了许多问题,包括我继续使用EWS

今天,我们将分享我们计划在未来两年内放弃对 EWS 的基本身份验证访问,支持将在2020 年 10 月 13 日结束。

https://techcommunity.microsoft.com/t5/exchange-team-blog/upcoming-changes-to-exchange-web-services-ews-api-for-office-365/ba-p/608055

Microsoft Graph 是用于访问 Exchange Online 数据的推荐 API。旨在访问 Exchange Online 数据的新应用程序应使用 Microsoft Graph。

EWS.NET Core在安装后项目中出现的各种警告中,支持似乎也很低。

我目前的所有工作EWS都是在一个类中完成的,其中传递了几个环境变量来设置WebCredentials等,但是当我阅读了许多 Microsoft 文章(包括:无需用户访问)时,我意识到没有什么是简单的不再 :) 关于 Graph 的使用,我没有找到直接的代码示例来说明如何以最简单的方式将这种纯粹的后端集成实现到邮箱中。

我想知道是否有人可以给我一个与后端集成相关的简单且适当的身份验证和授权示例?即一个未经管理员同意的弹出窗口或任何其他不适合这样的集成的弹出窗口,这仍然可能吗?

标签: c#microsoft-graph-apimicrosoft-graph-mail

解决方案


这是一个net core 2.1 控制台示例

有委托和应用程序权限。委托是一个弹出窗口,需要用户,应用程序是通过服务主体(并且可以以非交互方式/自动化方式完成)。

上例中的第 2 步使用了User.Read.All权限。这会为您提供电子邮件地址,以及有关您的用户的大量其他信息。如果您只想要电子邮件,那就太矫枉过正了。User.ReadBasic.All为您的目的添加应用程序注册是一个更好的权限。(该示例应该可以正常工作,您将权限更改为User.ReadBasic.All

在示例的最后一部分(粘贴在下面)中,您将想要更改查询并且很可能想要添加一个迭代器。

GraphServiceClient graphClient = GetAuthenticatedGraphClient(config);
List<QueryOption> options = new List<QueryOption>
{
    new QueryOption("$top", "1")
};

var graphResult = graphClient.Users.Request(options).GetAsync().Result;
Console.WriteLine("Graph SDK Result");
Console.WriteLine(graphResult[0].DisplayName);

Graph 和 MSAL 起初可能看起来很复杂,但非常有价值。微软正在定期添加功能(和函数)来绘制图表。图 1.0 文档


推荐阅读