这个问题基于我之前提出的一个问题,但后来有了更多细节和经验.
首先是一些背景,我有一个Outlook Addin应该转发用户消息,然后将消息移动到特定文件夹.这需要在OWA和Outlook 2016环境中适用于Prem Exchange.它既适用于以前的客户端,也适用于O365用户的Outlook Mobile App.
我的具体问题归结为检测何时使用EWS与Rest API(甚至是MS Graph API).
这是我的代码片段:
Office.initialize = function() {
$(document).ready(function() {
$('#forward').click(forwardMessage);
});
};
function forwardMessage() {
if(Office.context.mailbox.restUrl) { // The problem child
forwardEWS(); // Works like a charm
} else {
forwardRest(); // Works fine for O365 users
}
}
function forwardRest() {
var restHost = Office.context.mailbox.restUrl;
var restId = getItemRestId();
Office.context.mailbox.getCallbackTokenAsync({isRest: true}, function(result){
if (result.status === "succeeded") {
var accessToken = result.value;
$.ajax({
url: restHost + '/v2.0/me/messages/' …Run Code Online (Sandbox Code Playgroud) outlook exchangewebservices outlook-restapi office-js outlook-web-addins
我有一个Outlook加载项,该加载项从OfficeJS捕获ItemID,并将其传递回快递服务器,该服务器通过Graph API转发端点转发消息。
通常,我得到的ItemID类似于Graph API正确转发的内容:
AQMkADAwATNiZmYAZC1mZDMyLTJjODAtMDACLTAwCgBGAAAD6HpLXdIWSkydFpIOnccszQcAa+WVq3+CfU+sUUEjYH6kNXXXXXXa+WVq3+CfU+sUUEjYH6kNAAAANor+k8AAAA=
我遇到的问题是,在某些情况下,我会得到一个这样的ItemID:
AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA
注意/尾随前的权利AAAA。
因此,我然后对URI组件进行编码并触发以下请求:
https://graph.microsoft.com/v1.0/me/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ%2BJc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC%2BafEDRa51jp3lYhRMAAHjntX%2FAAAA/forward
Run Code Online (Sandbox Code Playgroud)
我得到这个回应:
"error":{
"code":"BadRequest",
"message":"Unsupported segment type. ODataQuery: users/rando@outlook.com/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA/forward",
"innerError":{
"request-id":"6b3a8b34-4474-4260-98d4-107b1dfd4cc4",
"date":"2017-08-04T18:02:10"
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到这个问题或知道解决方案?当/ItemId中包含a时,这似乎在Microsoft端可能是一个问题。
注意:对发布的用户和ItemIds进行了一些清洁。