我正在开发Outlook加载项(与dotnet核心后端进行交互)。我想利用邮件的不变ID。 This page说
更新(2019年1月15日):此功能现在可以在Microsoft Graph v1.0和Beta中作为“选择加入”使用。默认情况下,图表将继续返回常规ID。
因此,为了访问此功能,我需要在API请求中发送HTTP标头:
Prefer: IdType="ImmutableId"
有一个可以做到这一点的API:
Office.context.mailbox.item.internetHeaders.setAsync({"Prefer": "IdType=\"ImmutableId\""});
在用于编写消息的React组件中,请求在componentDidMount()
方法中成功,但不会生成ImmutableId [已编辑-setAsync()
方法仅可用于编写消息]。在编写问题的过程中,我在setAsync()
上找到了答案:
您需要采取一些其他步骤来完成更新。在外接程序HTML页面的head标签中,注释掉或删除任何现有的office.js脚本引用,并按如下所示引用更新的Office库JavaScript API:
this page
CDN URL中office.js中的/ 1 /指定使用Office.js版本1中的最新增量版本。
我已经用更新的脚本引用更新了<script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>
文件,但是请求仍然失败-即使在成功设置标头的情况下,ID也不是不可变的,itemId只是标准的易失性ID,当项在文件夹之间移动。是否有一个示例演示了此功能的成功使用?
第一个文档描述了在调用Microsoft Graph或Exchange REST API时要设置的HTML标头。根据您使用id的方式,这对您以后可能很重要。
要获取Outlook项目的不变ID:
taskpane.html
获取EWS项目IDOffice.context.mailbox.item.itemId
REST API进行远程服务调用,以将REST ID交换为不可变的ID这是如何从Outlook加载项中调用REST API的不完整示例。它缺少访问令牌,因为translateExchangeIds
REST API需要translateExchangeIds
权限,这不是getClientAccessToken API返回的令牌的范围。这个简短的示例基于translateExchangeIds
文章,其中包含有关发出类似此请求的更多信息。
User.ReadBasic
您还可以在Outlook加载项making REST API calls from an Outlook add-in上为客户端不可变id API创建功能请求。在我们进行计划过程时,会考虑对UserVoice的功能请求。