当前位置: 首页 > 知识库问答 >
问题:

EWS读取电子邮件和文件夹c#:权限和同意

鲁博瀚
2023-03-14

我正在尝试使用MSAL和EWS阅读收件箱中的电子邮件,到目前为止,我可以使用MSAL进行身份验证,但在阅读电子邮件时遇到了困难

如果我将Exchange API的应用程序API权限作为“full_access_as_app”提供,那么我就可以阅读收件箱文件夹中的电子邮件。但是,为了遵循最小特权原则,我不想使用完全访问权限选项。因此,当我撤销完全访问权限,然后仅为 Mail.Read 提供权限和同意时,我收到 401 错误:

Type: Microsoft.Exchange.WebServices.Data.ServiceRequestException
Stack trace:
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable`1 items, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode, ServiceErrorHandling errorHandling)
at Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
at Microsoft.Exchange.WebServices.Data.Item.Save(FolderId parentFolderId)
at Microsoft.Exchange.Tools.ExRca.Tests.CreateItemTest.PerformTestReally()
Exception details:
Message: The remote server returned an error: (401) Unauthorized.
Type: System.Net.WebException
Stack trace:
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse()
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)```

I have tried few more permissions, such as below, but they haven't worked too:

Exchange.ManageAsApp
Mail.ReadWrite
MailboxSettings.Read
MailboxSettings.ReadWrite
User.Read.All

[API Permissions][1]

**Which are minimal permissions should be setup in order to read emails for a users mailbox folders?**

Thank you


  [1]: https://i.stack.imgur.com/xFub6.png

共有1个答案

施永贞
2023-03-14

遗憾的是,由于 EWS 在这一点上是旧版 API,因此未实现更受约束的权限,因此唯一有效的两个作用域是 EWS。AccessAsUser.All 用于代理权限,full_access_as_app用于应用权限。如果需要使用更多受约束的权限,请查看使用图形 API。

 类似资料:
  • 我想出了一个解决办法,就是导入所有用户的电子邮件文件夹。这个解决方案是工作的,它只是繁琐的维护,因为我们几乎每周都有新的/删除的用户。

  • 问题内容: 我必须要做一个Windows应用程序,该应用程序会不时访问Gmail帐户并检查是否有新电子邮件。如果有的话,它必须阅读电子邮件的正文和主题(简单的文本电子邮件,没有图像或附件)。 请不要使用付费库,如果使用了其他库,请提供下载路径。 而且我只需要电子邮件正文和主题。因此,如果可以解析来自Gmail的冗长而复杂的邮件,并且仅包含主题和正文的两个字符串,那将是完美的选择。 最后,我只需要使

  • 我正在使用JavaLibpst查看其中包含哪些电子邮件和电子邮件附件。现在,请建议一种方法,将PST文件中的或和电子邮件附件提取到本地文件夹中。

  • 问题内容: 我正在打包和分发我为Windows,Linux和Mac开发的程序。我计划将文件和文件夹放在zip存档中。 如果我设置了正确的文件夹和文件权限,然后压缩为zip并重新分发,那么当用户在Linux或Mac系统中提取它们时,这些权限是否会得到维护?还是他们必须自己设置权限? 问题答案: 不在存档中存储文件权限。 归档文件将保留Linux和OS X上的文件权限。我不知道Windows上会发生什

  • 我正在尝试在我的web应用程序(当前在localhost中)中发送电子邮件,我正在使用我在控制台应用程序中使用的下一个代码(及其工作代码),它应该打开一个网页,询问google帐户: 我得到了一个错误: 谷歌。API。请求。请求错误 许可不足[403] 错误[消息[权限不足]位置[-]原因[权限不足]域[全局]

  • 问题内容: 我想在Linux中一步(命令)更改文件夹及其所有子文件夹和文件的权限。 我已经尝试过以下命令,但仅适用于上述文件夹: 有没有一种方法来设置的所有内容,包括子文件夹和文件? 另外,将来,如果我在其中创建新文件夹或文件,如何将其权限自动设置为? 我也看了这个链接: http://stackoverflow.com/questions/3740187/how-to-set-default-c

  • 我有一个spring mvc应用程序,我试图将日期LocalDate呈现为字符串,对于普通视图,它可以工作,但对于电子邮件,它不工作,并抛出以下错误: 原因:org.springframework.core.convert.converterNotFoundException:找不到能够从[java.time.localdate]类型转换为[java.lang.string]类型的转换器 代码: