为什么我的saveAsync方法总是返回相同的结果? (Office.js-Outlook加载项)

时间:2018-09-23 13:42:28

标签: microsoft-graph outlook-addin office-js outlook-web-addins

我目前正在使用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的免费试用版中,该试用版已过期。我今天再次重新启动了订阅,但是此错误仍然弹出。

但是,即使在今天之前,这种模式也使我无法预料。有时,电子邮件不会在没有明显错误的情况下进行首次尝试发送,而有时,电子邮件会发送,但电子邮件不会消失,从而在用户面前留下了悬挂的草稿。

我很乐意听到有关此的任何帮助或建议,因为这已经引起相当多的挫败感!

1 个答案:

答案 0 :(得分:0)

根据您的描述,我假设您要使用MS Graph API发送eamil。

我试图重现您的问题。但是我无法收到像您一样的错误消息。

我们查看了您的描述,发现您的MessageID出现了一些问题

AAMkAGE4ZWVlNjI1LTk3NjAtNDFmYy1hZDhkLTU3ZWY0ZjJiMDk5YgBGAAAAAACghEgqiSFAQo8v+Kh2wPqEBwDoiTH7R3zxTZ+n2OMFzElyAAAAAAEPAADoiTH7R3zxTZ+n2OMFzElyAAAT/OkjAAA=

我们发现此MessageID中有一个/字符。我认为我们应该检查MessageID的生成方式。