【问题标题】:Why is my saveAsync method always returning the same result? (Office.js - Outlook Add-in)为什么我的 saveAsync 方法总是返回相同的结果? (Office.js - Outlook 插件)
【发布时间】:2019-02-27 05:15:32
【问题描述】:

我目前正在编写一些代码,作为带有 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。我今天又重新订阅了,但是这个bug还是出现了。

但是,即使在今天之前,我也遇到了这种模式的不可预知的行为。有时,电子邮件在第一次尝试时不会发送,没有明显的错误,有时,电子邮件会发送,但电子邮件不会消失,在用户面前留下一个悬而未决的草稿。

我很想听听这方面的任何帮助或建议,因为这引起了相当多的挫败感!

【问题讨论】:

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


【解决方案1】:

根据您的描述,我假设您想使用 MS Graph API 发送电子邮件。

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

我查看了您的描述,发现您的 MessageID 有问题,

AAMkAGE4ZWVlNjI1LTk3NjAtNDFmYy1hZDhkLTU3ZWY0ZjJiMDk5YgBGAAAAAACghEgqiSFAQo8v+Kh2wPqEBwDoiTH7R3zxTZ+n2OMFzElyAAAAAAEPAADoiTH7R3zxTZ+n2OMFzElyAAAT/OkjAAA=

我们可以发现这个MessageID中有一个/字符。我认为我们应该检查 MessageID 是如何生成的。

【讨论】:

  • 这里的 messageID 变量来自saveAsync() 函数。该函数旨在返回刚刚保存的草稿的 ID,但我每次都得到相同的字符串。
  • 奇怪-我今天又试了一下,ID好像有点不一样:AAMkAGE4ZWVlNjI1LTk3NjAtNDFmYy1hZDhkLTU3ZWY0ZjJiMDk5YgBGAAAAAACghEgqiSFAQo8v+Kh2wPqEBwDoiTH7R3zxTZ+n2OMFzElyAAAAAAEPAADoiTH7R3zxTZ+n2OMFzElyAAAT/OknAAA=
  • 看起来,/ 之后的字符串,AAA 之前的字符实际上会随着每个新草稿的生成而增加 1
  • 请确认您是如何获取消息ID的。
猜你喜欢
  • 2017-09-21
  • 2017-03-13
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多