我尝试使用 Javascript 和 REST API 通过 EWS 发送电子邮件。 到目前为止,OAuth 还不是问题。 问题是,如果我尝试发送电子邮件,服务器会发送以下响应:
"{"error":{"code":"RequestBodyRead","message":"无效的 JSON。 JSON 内容中无法识别 token 。“}”(取自 Chrome 调试控制台)。
这是我的 Javascript,发生错误的地方:
function mailIsRaus(token) {
var gottenParam = JSON.stringify(token);
var jsonObj = JSON.parse(gottenParam);
var leToken = jsonObj['access_token'];
//This is the Token from Active Directory
leToken = "Bearer " + leToken;
var Message = {
"Message": {
"Subject": "TESTING REST API EWS",
"Body": {
"ContentType": "Text",
"Content": "IT WORKED. The EWS is working my friend."
},
"ToRecipients": [
{
"EmailAddress": {
"Address": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="650f0a0d0b010a0025160a0800110d0c0b024b060a08" rel="noreferrer noopener nofollow">[email protected]</a>"
}
}
]
},
"SaveToSentItems": "true"
};
//eMailData = JSON.stringify(eMailData);
$.ajax({
type: 'POST',
beforeSend: function (request) {
request.setRequestHeader("Authorization", leToken);
request.setRequestHeader("Content-Type", "application/json");
},
data: Message,
url: 'https://outlook.office.com/api/v2.0/me/sendmail',
success: function (e) {
console.log('Email sent');
console.log(e);
},
error: function (message) {
console.log(message);
}
});
}
我严格遵守MSDN,现在我不知道为什么会发生这个错误。 如果我注释掉“setRequestHeader”,则会收到错误 401 未经授权。 token 是正确的。 范围也是正确的。
也许我在“var Massage”或其他什么方面犯了一个简单的错误......
最佳答案
我自己找到了解决方案。 我必须取消注释以下代码行:
eMailData = JSON.stringify(eMailData);
现在一切正常。
关于javascript - EWS - JSON 内容中无法识别 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34652645/