【问题标题】:Using Microsoft Graph in the simplest way possible to find email以最简单的方式使用 Microsoft Graph 查找电子邮件
【发布时间】:2020-01-17 09:15:51
【问题描述】:

我有一个自动化项目 (.NET Framework),目前使用 Microsoft.Exchange.WebServices 轻松完成简单的任务,例如在远程收件箱或文件夹中查找电子邮件、检查附件等。我们从组织电子邮件帐户中获取数据上:outlook.office365.com

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

今天,我们将分享我们的计划,即在未来两年内放弃对 EWS 的基本身份验证访问,支持将在 10 月结束。 2020 年 13 月 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 等,但正如我阅读了许多微软文章(包括:Get access without a user)我已经意识到没有什么比这更简单了 :) 关于 Graph 的使用,我没有找到直接的代码示例来说明如何以最简单的方式将这种纯粹的后端集成实现到邮箱中。

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

【问题讨论】:

  • 这有用吗? Setup Graph Managed API我在从 EWS 转移我的一些工作时写了那个。
  • 感谢@IvanFranjic 的链接,我正忙着浏览所有内容。
  • @IvanFranjic 你能帮我理解吗,在你的例子中,我们只是设置exchangeServiceContext["user@domain.com"] 什么时候会提供邮箱的密码?当然,注册和验证您的图形应用程序不应该让您进入您公司 azure 上的任何邮箱的上帝模式?您确定还需要为各个邮箱提供密码吗?
  • 一旦按照 github wiki 中的描述设置身份验证提供程序,您将获得类似于 Ews 的“应用程序模拟”的内容,并且您不必提供用户名/密码。这将使您能够访问您在 azure 中的应用设置注册中指定的范围(邮箱和授权)。如果 IAuthorizationProvider 不符合您的需要,您仍然可以设置不同类型的授权。

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


【解决方案1】:

这是net core 2.1 console example

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

上例中的第 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 乍一看可能很复杂,但非常有价值。微软正在定期添加功能(和函数)来绘制图表。 Graph 1.0 Docs

【讨论】:

  • 感谢@ChadCarlton 的输入!我会尽快处理您的反馈并报告。
  • 我想补充一点,还有其他方法可以获取这些数据。Powershell 也可以轻松使用。
猜你喜欢
  • 2022-08-11
  • 2017-09-28
  • 2022-10-14
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多