Office js Office.js Outlook插件InternetHeader更喜欢ImmutableId
我正在开发Outlook外接程序(使用dotnet core后端进行响应)。我想利用邮件消息的不可变ID。说 更新(2019年1月15日):此功能现在以“选择加入”的形式在Microsoft Graph v1.0和beta版中提供。默认情况下,Graph将继续返回常规ID 因此,为了访问此功能,我需要在API请求中发送HTTP头:Office js Office.js Outlook插件InternetHeader更喜欢ImmutableId,office-js,office-addins,outlook-web-addins,Office Js,Office Addins,Outlook Web Addins,我正在开发Outlook外接程序(使用dotnet core后端进行响应)。我想利用邮件消息的不可变ID。说 更新(2019年1月15日):此功能现在以“选择加入”的形式在Microsoft Graph v1.0和beta版中提供。默认情况下,Graph将继续返回常规ID 因此,为了访问此功能,我需要在API请求中发送HTTP头: Prefer: IdType="ImmutableId" 有一个API可以做到这一点: Office.context.mailbox.item.internetHe
Prefer: IdType="ImmutableId"
有一个API可以做到这一点:
Office.context.mailbox.item.internetHeaders.setAsync({"Prefer": "IdType=\"ImmutableId\""});
在用于编写消息的React组件中,请求在componentDidMount()
方法中成功,但不会生成不可变ID[已编辑-该方法仅用于编写消息]。在写问题的过程中,我找到了关于以下方面的答案:
您需要采取一些额外的步骤来完成更新。在外接程序HTML页面的head标记中,注释掉或删除任何现有的office.js脚本引用,并引用office library的更新JavaScript API,如下所示:
CDN URL中office.js中的/1/指定使用office.js版本1中的最新增量版本
我已经用更新的脚本引用更新了
taskpane.html
文件,但请求仍然失败-id从来都不是不可变的,即使成功设置了标题,itemId只是在文件夹之间移动项目时更改的标准易失性id。是否有一个示例演示了此功能的成功使用?第一个文档描述了在调用Microsoft Graph或Exchange REST API时要设置的HTML头。这对您以后可能很重要,具体取决于您如何使用id
要获取Outlook项目的不可变id,请执行以下操作:
Office.context.mailbox.item.itemId
translateExchangeIds
REST API需要User.ReadBasic
权限,这不是getClientAccessToken API返回的令牌的范围。这个缩略的例子是基于这篇文章的,它包含了更多关于提出其他类似请求的信息
var accessToken = "" // Need access token with User.ReadBasic or greater permissions
var itemIdFormat = "ewsId";
var translateExchangeIdsUrl = Office.context.mailbox.restUrl +
'/v2.0/me/translateExchangeIds/';
$.ajax({
type: 'POST',
url: translateExchangeIdsUrl,
data: JSON.stringify({
InputIds : [
Office.context.mailbox.item.itemId
],
"SourceIdType": itemIdFormat,
"TargetIdType": "restImmutableEntryId"
}),
contentType: 'application/json',
dataType: 'json',
processData: false,
headers: { 'Authorization': 'Bearer ' + accessToken }
}).done(function(result){
console.log(result);
}).fail(function(error){
console.error(error);
});
您还可以在Outlook加载项上为客户端不可变id API创建功能请求。在我们进行规划过程时,会考虑对UserVoice的功能请求。第一个文档描述了在调用Microsoft Graph或Exchange REST API时要设置的HTML头。这对您以后可能很重要,具体取决于您如何使用id 要获取Outlook项目的不可变id,请执行以下操作:
Office.context.mailbox.item.itemId
translateExchangeIds
REST API需要User.ReadBasic
权限,这不是getClientAccessToken API返回的令牌的范围。这个缩略的例子是基于这篇文章的,它包含了更多关于提出其他类似请求的信息
var accessToken = "" // Need access token with User.ReadBasic or greater permissions
var itemIdFormat = "ewsId";
var translateExchangeIdsUrl = Office.context.mailbox.restUrl +
'/v2.0/me/translateExchangeIds/';
$.ajax({
type: 'POST',
url: translateExchangeIdsUrl,
data: JSON.stringify({
InputIds : [
Office.context.mailbox.item.itemId
],
"SourceIdType": itemIdFormat,
"TargetIdType": "restImmutableEntryId"
}),
contentType: 'application/json',
dataType: 'json',
processData: false,
headers: { 'Authorization': 'Bearer ' + accessToken }
}).done(function(result){
console.log(result);
}).fail(function(error){
console.error(error);
});
您还可以在Outlook加载项上为客户端不可变id API创建功能请求。在我们进行规划过程时,会考虑对UserVoice的功能请求。Office.context.mailbox.item.internetHeaders用于处理电子邮件MIME头。它与REST ImmutableId头不相关。当前Outlook加载项不支持不可变id。您的方案是什么?您主要对通过Outlook加载项获取项目的不可变ID感兴趣吗?是的,我正在尝试为Outlook加载项获取邮件项目的不可变ID。Office.context.mailbox.item.internetHeaders用于处理电子邮件MIME头。它与REST ImmutableId头不相关。当前Outlook加载项不支持不可变id。您的方案是什么?您主要对通过Outlook加载项获取项目的不可变ID感兴趣吗?是的,我正在尝试为Outlook加载项获取邮件项目的不可变ID。对于任何想要更新此想法的人,我已在此处为任何想要更新此想法的人创建了一个请求,我已在此处创建了一个请求