我目前正在使用office-js库编写一些代码,作为Outlook外接程序的一部分。
基本上,单击“发送”按钮后,我的应用程序应将当前打开的消息另存为草稿,然后调用可以发送该消息的Microsoft Graph API。
我的代码当前在客户端看起来像这样:
Office.context.mailbox.item.saveAsync(
async function callback(result) {
if (result.status === "succeeded") {
const messageId = result.value
await axios.post("/api/send", {
headers: { "Authorization": "Bearer " + accessToken },
data: {
messageId
}
});
}
else {
console.log(result.error)
}
}
);
然后,在我的服务器上,对Graph API进行此调用:
const graphData = await fetch(
`https://graph.microsoft.com/v1.0/me/messages/${messageId}/send`,
{
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + graphToken,
'Content-Length': '0'
}
}
);
直到今天,一切都很正常。但是,我现在看到的是,无论我按哪条消息继续发送,我在向Office.context.mailbox.item.saveAsync()
的呼叫中都看到相同的消息ID:
// console.log(messageId)
AAMkAGE4ZWVlNjI1LTk3NjAtNDFmYy1hZDhkLTU3ZWY0ZjJiMDk5YgBGAAAAAACghEgqiSFAQo8v+Kh2wPqEBwDoiTH7R3zxTZ+n2OMFzElyAAAAAAEPAADoiTH7R3zxTZ+n2OMFzElyAAAT/OkjAAA=
然后,我得到了“不受支持的细分类型”。从Microsoft Graph返回的错误,我认为这是因为消息ID确实不存在。
我不确定这是怎么发生的,但我认为这可能与我目前开发的帐户有关。直到昨天,我还在MS Office的免费试用版中,该试用版已过期。我今天再次重新启动了订阅,但是此错误仍然弹出。
但是,即使在今天之前,这种模式也使我无法预料。有时,电子邮件不会在没有明显错误的情况下进行首次尝试发送,而有时,电子邮件会发送,但电子邮件不会消失,从而在用户面前留下了悬挂的草稿。
我很乐意听到有关此的任何帮助或建议,因为这已经引起相当多的挫败感!
答案 0 :(得分:0)
根据您的描述,我假设您要使用MS Graph API发送eamil。
我试图重现您的问题。但是我无法收到像您一样的错误消息。
我们查看了您的描述,发现您的MessageID出现了一些问题
AAMkAGE4ZWVlNjI1LTk3NjAtNDFmYy1hZDhkLTU3ZWY0ZjJiMDk5YgBGAAAAAACghEgqiSFAQo8v+Kh2wPqEBwDoiTH7R3zxTZ+n2OMFzElyAAAAAAEPAADoiTH7R3zxTZ+n2OMFzElyAAAT/OkjAAA=
我们发现此MessageID中有一个/
字符。我认为我们应该检查MessageID的生成方式。