【发布时间】:2018-12-16 09:09:27
【问题描述】:
我正在尝试使用我的加载项中的 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);
}
});
我得到的错误是: 无法获取未定义或空引用的属性“状态”
为了排除故障,我打印了附件 ID: AAMkADU4OTU2Mjg4LthiNzktNDY0Yi1hZmE4LWFmMjAzZjczYjIxOQBGAAAAAADiRE+1naePQ7MPCJEcJqgqBwCgpNXsitDwTY/mc0w2Y/zOAAAAAAEMAACgpNXsitDwTY/mc0w2Y/zOAAARXFqBAAABEGAQAN0NYKX5HP
我从几页中了解到,不同的 API 要求附件 id 的格式略有不同。所以我不确定这是否是问题的根源......
【问题讨论】:
-
我相信您的意思是使用 getAttachmentContentAsync 方法?这是接收附件 ID 的方法,而 getAttachmentsAsync 没有。此外,我们不强制限制 100 个字符,我们将更新文档以反映这一点。当您使用附件 ID 调用 getAttachmentContentAsync 时,您看到了哪些确切的错误?
-
您好 Outlook 插件团队,是的,我的意思是 getAttachmentContentAsync。我已经更新了我原来的帖子。另外,我发布了我为调用该函数而编写的代码,请看一下它是否正确使用它。谢谢!
-
您的代码似乎在我们这边运行良好,没有任何错误。我们在一封已读的电子邮件上进行了尝试(我相信这是您正在尝试的地方)并获得了预期的结果。您能否调试并检查回调中结果对象的值是多少?此外,所有带有附件的电子邮件都会发生这种情况吗?这甚至发生在带有附件的草稿电子邮件上吗?
-
另请注意,此 API 仍处于预览阶段,尚未完全发布给所有客户/客户以供使用。也有可能您碰巧在尚未启用此功能的发布频道上。
-
插件团队您好,我目前正在测试的平台是outlook.office.com/owa 是否启用了此功能?
标签: outlook-web-addins outlook-web-app