【问题标题】:Outlook add-in: get attachments and calculate total size from new emailOutlook 加载项:获取附件并计算新电子邮件的总大小
【发布时间】:2018-11-27 14:41:22
【问题描述】:

我正在使用 Outlook 插件。我有一个要求,如果附件是total size > 10MB,我必须抛出错误。

我正在使用以下将新电子邮件另存为草稿

const officeIns = this.getOfficeIns();
officeIns.context.mailbox.item.saveAsync((result) => {
   cb(result.value);
});

我有以下代码来获取电子邮件附件

// Inside callback function to officeIns.context.mailbox.item.saveAsync let headers = new HttpHeaders(); headers = headers.set('Authorization', `Bearer ${olUserTokenObj['token']}`); const emailMessageId = officeIns.context.mailbox.convertToRestId(messageId, officeIns.MailboxEnums.RestVersion.v2_0); console.log('rest id', emailMessageId); const options = { headers: headers, withCredentials: false }; let graphApiUrl = `https://outlook.office.com/api/v2.0/me/messages`; graphApiUrl = `${graphApiUrl}/${emailMessageId}/attachments?$select=Size,Name&_=${Date.now()}`; const data = await this.httpClient.get(graphApiUrl, options).toPromise(); // ... calculating total size from `data.value`

如果获取附件时出错,我会延迟 10 秒重试获取附件 5 次

但是,附件只是在某个时候被保存,而且大部分时间都没有保存。我在 Outlook 客户端的加载项中更多地看到了这个问题。

saveAsync 似乎没有保存附件。谁能帮我解决这个问题

问题:

  1. 我可以使用 saveAsync 函数来保存附件吗?

  2. 我们是否有任何在将所有附件保存到服务器后触发的 office.js 事件?

  3. 有没有其他方法可以解决这个问题?

我已阅读此文档,但未找到相关信息。 https://docs.microsoft.com/en-us/office/dev/add-ins/reference/objectmodel/requirement-set-1.7/office.context.mailbox.item#saveasyncoptions-callback

【问题讨论】:

    标签: outlook outlook-addin office-js outlook-restapi


    【解决方案1】:

    您可能在使用 saveAsync 和桌面客户端缓存模式时遇到问题。其他人已经注意到了这个问题,这里是stackoverflow 问题之一的解释以及一些可能的问题缓解措施。还有来自community 的增强/功能请求,您可以投票并希望它在不久的将来完成。

    【讨论】:

    • 这个答案很可能是正在发生的事情。您的场景中如何添加附件(这是一个很大的不清楚)。如果您通过 Graph/EWS 添加它们,那么它们将不会显示在客户端中。如果它们被添加到客户端(通过 UI/User 或通过 addFileAttachmentAsync api),那么它们应该被保存并在某个时候上传到服务器。但是,由于缓存模式,客户端/服务器可能需要一些时间来同步。
    猜你喜欢
    • 2013-01-26
    • 2011-07-11
    • 2021-06-19
    • 2016-05-15
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多