Outlook加载项:获取附件并从新电子邮件中计算总大小

时间:2018-11-27 14:41:22

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

我正在使用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

1 个答案:

答案 0 :(得分:1)

您可能对saveAsync和桌面客户端缓存模式有疑问。其他人已经注意到了这个问题,这是stackoverflow问题之一中的解释以及可能的缓解方法。 community还要求您增强/功能,您可以对其进行投票并希望它在不久的将来能够实现。