通过 Outlook Web 加载项从 OWA 获取附件内容
Obtain attachment content from OWA through Outlook web add-in
我正在尝试使用加载项中的 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,参考指出:"The identifier of the attachment you want to get. The maximum length of the string is 100 characters."
基于此,我想我已经确定了问题所在。现在的问题是,如何解决。此 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);
}
});
我得到的错误是:
无法获取 属性 'status' 的未定义或空引用
为了排除故障,我打印了附件 ID:
AAMkADU4OTU2Mjg4LThiNzktNDY0Yi1hZmE4LWFmMjAzZjczYjIxOQBGAAAAAADiRE+1naePQ7MPCJEcJqgqBwCgpNXsitDwTY/mc0w2Y/zOAAAAAAEMAACgpNXsitDwTY/mc0w2Y/zOAAARXFqBAAABEgAQAN0M5JhRvPxIoP5KYNYRk54=
我从几页中读到,不同的 API 期望附件 ID 的格式略有不同。所以我不确定这是否是问题的根源...
getAttachmentContent API 尚未为 OWA 实现。对于空结果对象 - 这是一个已知问题。它已被放入我们的待办事项列表中。很遗憾,我们目前没有时间表可以分享。
另外,回答你的第二个问题,因为你正在测试 OWA,你可以简单地转到开发人员工具并在那里放置一个断点来测试加载项并使用控制台 window 检查变量数据在他们里面。
我正在尝试使用加载项中的 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,参考指出:"The identifier of the attachment you want to get. The maximum length of the string is 100 characters."
基于此,我想我已经确定了问题所在。现在的问题是,如何解决。此 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);
}
});
我得到的错误是: 无法获取 属性 'status' 的未定义或空引用
为了排除故障,我打印了附件 ID: AAMkADU4OTU2Mjg4LThiNzktNDY0Yi1hZmE4LWFmMjAzZjczYjIxOQBGAAAAAADiRE+1naePQ7MPCJEcJqgqBwCgpNXsitDwTY/mc0w2Y/zOAAAAAAEMAACgpNXsitDwTY/mc0w2Y/zOAAARXFqBAAABEgAQAN0M5JhRvPxIoP5KYNYRk54=
我从几页中读到,不同的 API 期望附件 ID 的格式略有不同。所以我不确定这是否是问题的根源...
getAttachmentContent API 尚未为 OWA 实现。对于空结果对象 - 这是一个已知问题。它已被放入我们的待办事项列表中。很遗憾,我们目前没有时间表可以分享。
另外,回答你的第二个问题,因为你正在测试 OWA,你可以简单地转到开发人员工具并在那里放置一个断点来测试加载项并使用控制台 window 检查变量数据在他们里面。