outlook-web-addins - 通过 Outlook Web 加载项从 OWA 获取附件内容
问题描述
我正在尝试使用我的加载项中的 Office.context.mailbox.item.getAttachmentsAsync() API 调用从邮件项中获取附件的内容,但是我遇到了一些意想不到的结果......
在我的加载项中,我得到了邮件项目中所有附件的列表:
var listOfAttachments = item.attachments;
if (listOfAttachments.length > 0) {
for (i = 0; i < listOfAttachments.length; i++) {
_att = listOfAttachments[i];
console.log("Attachment name: " + _att.name);
console.log("Attachment type: " + _att.attachmentType);
console.log("Attachment content type: " + _att.contentType);
console.log("Attachment ID: " + _att.id);
console.log("string length: " + _att.id.length);
}
这很好用......但是,我意识到附件 ID 超过 100 个字符(实际上是 180 个字符)。而在getAttachmentContentAsync()函数的API参考中,第一个参数是附件ID,参考说明:“你要获取的附件的标识符。字符串的最大长度为100个字符。”
因此,基于此,我想我已经确定了问题所在。现在的问题是,如何解决。这个 API 需要什么附件 ID?
谢谢!
更新:这是我用来检索附件内容的代码:
var options = { asyncContext: { type: _att.attachmentType } };
item.getAttachmentContentAsync(_att.id, options, function (result) {
if (result.status == Office.AsyncResultStatus.Succeeded) {
console.log("Call returned success!");
var AttachmentContent = result.value; // Get the attachment content
if (AttachmentContent.format == Office.MailboxEnums.AttachmentContentFormat.Base64) {
// handle file attachment
console.log("Base64 String: " + AttachmentContent.content);
}
else if (result.format == Office.MailboxEnums.AttachmentContentFormat.Eml) {
// handle item attachment
}
else {
// handle cloud attachment
}
} else {
var err = result.error;
console.log("Call failed: " + err.name + ": " + err.message);
}
});
我得到的错误是:Unable to get property 'status' of undefined or null reference
For purpose of troubleshooting, I printed out the attachment id: AAMkADU4OTU2Mjg4LThiNzktNDY0Yi1hZmE4LWFmMjAzZjczYjIxOQBGAAAAAADiRE+1naePQ7MPCJEcJqgqBwCgpNXsitDwTY/mc0w2Y/zOAAAAAAEMAACgpNXsitDwTY/mc0w2Y/zOAAARXFqBAAABEgAQAN0M5JhRvPxIoP5KYNYRk54=
我从几页中了解到,不同的 API 要求附件 id 的格式略有不同。所以我不确定这是否是问题的根源......
解决方案
尚未为 OWA 实现 getAttachmentContent API。对于空结果对象 - 这是一个已知问题。它已被列入我们的待办事项列表。不幸的是,我们目前没有时间表可以分享。
另外,回答第二个问题,因为您正在测试 OWA,您可以简单地转到开发人员工具并在那里放置一个断点来测试加载项并使用控制台窗口检查其中的变量数据。
推荐阅读
- visual-studio - 如何重新基准化 Azure 存储库
- javascript - scrollintoview 在 chrome 版本>=81 中不起作用。行为平稳没有发生
- c - json_tokener_parse ,分段错误
- azure - 是否有一些工具/命令可以从 powershell 运行 azcli 文件?
- appium - 如何滚动到不在 Appium 视口内的元素?
- json - 通过 spark sql 使用 json serde 访问 hive 表
- c++ - 查找所有元素的数组中最新最小元素的位置
- android - 更新后模拟器出现问题
- linux - 如果大于一定数量,如何使发行版自动安装
- python - 具有元类注册的数据类