#javascript #node.js #microsoft-graph-api
#javascript #node.js #microsoft-graph-api
Вопрос:
Я пытаюсь получить одно электронное письмо из почтового ящика Office 365.
Я отправляю электронное письмо id
в свое приложение через POST ( req.body.id
), а затем вызываю этот код, чтобы получить некоторые свойства электронной почты:
router.post('/id', async function(req, res, next) {
console.log("email with ID -> ", req.body.id)
let parms = { title: 'Inbox', active: { inbox: true } };
const accessToken = await authHelper.getAccessToken(req.cookies, res);
const userName = req.cookies.graph_user_name;
if (accessToken amp;amp; userName) {
parms.user = userName;
// Initialize Graph client
const client = graph.Client.init({
authProvider: (done) => {
done(null, accessToken);
}
});
try {
const result = await client
.api('/me/messages/', req.body.id)
.select('id,subject,from,toRecipients,ccRecipients,body,sentDateTime,receivedDateTime')
.get();
parms.messages = result.value;
console.log("email -> ", result.value);
res.render('message', parms);
} catch (err) {
parms.message = 'Error retrieving messages';
parms.error = { status: `${err.code}: ${err.message}` };
parms.debug = JSON.stringify(err.body, null, 2);
res.render('error', parms);
}
} else {
// Redirect to home
res.redirect('/');
}
});
На данный момент result.value
содержит все сообщения в почтовом ящике, а не только сообщение с предоставленным id
.
Может кто-нибудь сказать мне, где моя ошибка, пожалуйста?
Ответ №1:
api
Метод имеет один параметр пути. Вызов его like .api('/me/messages/', req.body.id)
эффективно отправляет ему путь («/me / messages /») вместе с дополнительным параметром, который он игнорирует.
Вам нужно отправить ему одну строку, поэтому вам нужно добавить req.body.id
к path ( {path} {id}
):
const result = await client
.api('/me/messages/' req.body.id)
.select('id,subject,from,toRecipients,ccRecipients,body,sentDateTime,receivedDateTime')
.get();