首页 > 解决方案 > 通过 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 的格式略有不同。所以我不确定这是否是问题的根源......

标签: outlook-web-addinsoutlook-web-app

解决方案


尚未为 OWA 实现 getAttachmentContent API。对于空结果对象 - 这是一个已知问题。它已被列入我们的待办事项列表。不幸的是,我们目前没有时间表可以分享。

另外,回答第二个问题,因为您正在测试 OWA,您可以简单地转到开发人员工具并在那里放置一个断点来测试加载项并使用控制台窗口检查其中的变量数据。


推荐阅读