Outlook REST API SendMail-https://outlook.office.com/api/v2.0/me/sendmail的Http错误响应:401未经授权

时间:2018-08-07 15:52:13

标签: angular typescript nativescript outlook-restapi

我正在开发一个使用msgraph v.1.0生成的令牌通过Outlook api v2.0发送电子邮件的应用程序。它一直工作到几个星期前(据我所知),但是自从上星期三以来,我尝试了它,但是它不起作用(不发送电子邮件)!我以为是我的代码,但是我将其恢复为之前的代码,但仍能正常工作,但仍收到此错误:

我也已使用Mail.Send许可在Microsoft开发人员站点中注册了我的应用,然后返回那里以确保。 我的应用程序还可以访问SharePoint,并且可以正常工作。.登录时,我打印我的令牌,看起来不错。以前是发送电子邮件的。我不知道发生了什么。

"headers": {

"normalizedNames": {},

"lazyUpdate": null

},

"status": 401,

"statusText": "Unauthorized",

"url": "https://outlook.office.com/api/v2.0/me/sendmail",

"ok": false,

"name": "HttpErrorResponse",

"message": "Http failure response for https://outlook.office.com/api/v2.0/me/sendmail: 401 Unauthorized",

"error": null

}

我用来发送电子邮件的代码是:

private serverUrl =
"https://outlook.office.com/api/v2.0/me/sendmail";

constructor(private
http: HttpClient) {}

postData(data:
any, token:
any) {

let options =
this.createRequestOptions(token);

return this.http.post(this.serverUrl,
data, { headers:
options })

.map(res
=> res);

}

private createRequestOptions(token:
any) {

let headers =
new HttpHeaders({

"Authorization":
"Bearer " + 
token,

"Content-Type":
"application/json"

});

return headers;

}

我正在传递值:

this.mailService

.postData(this.data,
this.token)

.subscribe(

() => {

dialogs.alert("Email sent. Thank you!").then(function () {

let page =
topmost().currentPage;

page.modal.closeModal();

});

},

(e) => {

console.log(e);

alert({

message: "An error occurred while sending your contact helpdesk.",

okButtonText: 
"OK"

});

}); 

有人遇到这个问题吗?

1 个答案:

答案 0 :(得分:2)

我通过更改用于发送电子邮件的API解决了我的问题。我没有使用Outlook API,而是改用MSGRAPH,所以现在我的变量serverUrl为https://graph.microsoft.com/v1.0/me/sendmail,现在可以使用了。