了解 Outlook 加载项权限

Outlook 外接程序在其清单中指定所需的权限级别。 有四个可用级别。

权限级别
规范名称
XML 清单名称 Microsoft 365 名称的统一清单 摘要说明
限制 受限 MailboxItem.Restricted.User 允许使用实体,但不允许使用正则表达式。
读取项 ReadItem MailboxItem.Read.User 除了 受限中允许的内容外,它还允许:
  • 正则表达式
  • Outlook 外接程序 API 读取访问
  • 获取项属性和回调令牌
  • 编写自定义属性
读/写项 ReadWriteItem MailboxItem.ReadWrite.User 除了 读取项中允许的内容外,它还允许:
  • Outlook 加载项 API 的完全访问权限,但不包括 makeEwsRequestAsync
  • 设置项属性
读/写邮箱 ReadWriteMailbox Mailbox.ReadWrite.User 除了 在读/写项中允许的内容外,它还允许:

权限在清单中声明。 标记因清单类型而异。

  • XML 清单:使用 <Permissions> 元素。
  • Microsoft 365 (预览版统一清单) :使用“authorization.permissions.resourceSpecific”数组中对象的“name”属性。

注意

  • 对于使用“发送时追加”功能的加载项,需要一个补充权限。 使用 XML 清单,可以在 ExtendedPermissions 元素中指定权限。 有关详细信息,请参阅 在 Outlook 外接程序中实现end-on-send。 使用统一清单 (预览) ,可以在“authorization.permissions.resourceSpecific”数组中的其他对象中指定名为 Mailbox.AppendOnSend.User 的此权限。
  • 使用共享文件夹的加载项需要补充权限。 使用 XML 清单时,可以通过将 SupportsSharedFolders 元素设置为 来 true指定权限。 有关详细信息,请参阅 在 Outlook 外接程序中启用共享文件夹和共享邮箱方案。 使用统一清单 (预览) ,可以在“authorization.permissions.resourceSpecific”数组中的其他对象中指定名为 Mailbox.SharedFolder 的此权限。

四个级别的权限具有累积性:读/写邮箱权限包括读/写项权限、读取项权限和受限权限;读/写项权限包括读取项权限和受限权限;读取项权限包括受限权限。

在从 AppSource 安装邮件加载项之前,可以看到它请求的权限。 您还可以在 Exchange 管理员中心中查看已安装外接程序所需的权限。

受限权限

受限权限是最基本的权限级别。 默认情况下,如果加载项在其清单中不请求特定权限,Outlook 会将此权限分配给邮件加载项。

可以执行的操作

  • 仅获取项目主题或正文的特定实体(电话号码、地址、URL)。

  • 指定项目激活规则,此类规则需要阅读或撰写窗体中的当前项目为特定的项目类型,或与选定项目中支持的已知实体(电话号码、地址、URL)的任何较小子集匹配的 ItemHasKnownEntity rule 规则。

    注意

    当外接程序使用 Microsoft 365 统一清单 时,不支持依赖于激活规则的 Outlook 外接程序功能, (预览版) 。

  • 访问与用户或项目具体信息关的任何属性和方法。(请参阅下一部分,了解与用户或项目具体信息相关的属性和方法列表)。

不能执行的操作

读取项权限

读取项权限是权限模型中的下一级权限。

可以执行的操作

  • 在读取或 撰写窗体中读取当前项目的所有属性,例如阅读窗体中的 item.to 和撰写窗体中的 item.to.getAsync

  • 获取回调令牌,以使用 Exchange Web 服务 (EWS) 或 Outlook REST API 获取邮件附件或整个邮件。

  • 编写外接程序在相应邮件上设置的自定义属性

  • 从该邮件的主题或正文中获取所有现有已知实体,而不仅仅是一个子集。

  • 使用 ItemHasKnownEntity 规则中所有的 已知实体,或者 ItemHasRegularExpressionMatch 规则中的 正则表达式。 以下示例遵循架构 v1.1。 它显示一个规则,如果在所选邮件的主题或正文中找到一个或多个已知实体,则会激活加载项。

    注意

    当外接程序使用 Microsoft 365 统一清单 时,不支持依赖于激活规则的 Outlook 外接程序功能, (预览版) 。

      <Permissions>ReadItem</Permissions>
          <Rule xsi:type="RuleCollection" Mode="And">
          <Rule xsi:type="ItemIs" FormType = "Read" ItemType="Message" />
          <Rule xsi:type="RuleCollection" Mode="Or">
              <Rule xsi:type="ItemHasKnownEntity" 
                  EntityType="PhoneNumber" />
              <Rule xsi:type="ItemHasKnownEntity" EntityType="Address" />
              <Rule xsi:type="ItemHasKnownEntity" EntityType="Url" />
              <Rule xsi:type="ItemHasKnownEntity" 
                  EntityType="MeetingSuggestion" />
              <Rule xsi:type="ItemHasKnownEntity" 
                  EntityType="TaskSuggestion" />
              <Rule xsi:type="ItemHasKnownEntity" 
                  EntityType="EmailAddress" />
              <Rule xsi:type="ItemHasKnownEntity" EntityType="Contact" />
      </Rule>
    

禁止事项

读/写项权限

在清单中指定可请求此权限的 读/写项 权限。 在使用撰写方法(例如,Message.to.addAsyncMessage.to.setAsync)的撰写窗体中激活的邮件加载项必须使用至少这个等级的权限。

允许事项

禁止事项

  • mailbox.getCallbackTokenAsync 提供的令牌可用于:

    • 使用 Outlook REST API 更新或删除当前邮件,或访问用户邮箱中的其他任何邮件。
    • 使用 Outlook REST API 获取当前日历事件项。
  • 使用 mailbox.makeEWSRequestAsync

读/写邮箱权限

读/写邮箱权限是最高级别的权限。

除了 读取/写入项目 权限支持的内容外, mailbox.getCallbackTokenAsync 提供的令牌还允许使用 Exchange Web Services (EWS) 操作或 Outlook REST API 执行以下操作:

  • 读取和写入用户邮箱中任何邮件的所有属性。
  • 创建、读取和写入该邮箱中的任何文件夹或项目。
  • 从用户邮箱发送邮件

通过 mailbox.makeEWSRequestAsync,可以访问以下 EWS 操作。

尝试执行不受支持的操作会导致错误响应发生。

另请参阅