通过Outlook Web加载项从OWA获取附件内容

时间:2018-12-16 09:09:28

标签: outlook-web-addins outlook-web-app

我正在尝试使用加载项中的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 / zOAAAAAAEMAYGTYKYQYYPYAYQAYAYAQAYAQAYY

我从几页中了解到,不同的API期望附件ID的格式略有不同。所以我不确定这是否是问题的根源...

1 个答案:

答案 0 :(得分:0)

尚未为OWA实施getAttachmentContent API。对于空结果对象-这是一个已知问题。它已被放入我们的积压中。很遗憾,我们目前没有时间表。

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