尝试从Outlook加载项向电子邮件添加附件会返回以下错误:
status: failed
code:9007
message:"The attachment cannot be added to the item."
name:"AttachmentUploadGeneralFailure"
在任何浏览器中使用Web上的Outlook都会发生这种情况。在Outlook 2013/2016桌面客户端上,附件已成功添加。
该文件使用HTTPS和有效证书(非自签名)托管在运行加载项的同一域中。使用HTTP而不是HTTPS时不起作用。我可以通过在浏览器中输入URL来下载文件。没有“GET”请求服务器下载附件。
这个问题似乎特定于我的网络服务器。如果我尝试从互联网上附加一个随机文件,它可以正常工作。
更新:该文件只能由经过身份验证的加载项用户访问。它不公开。这可能就是为什么它不起作用的原因。有什么方法可以解决这个问题吗?
mailbox.item.addFileAttachmentAsync(
attachmentUrl,
fileName,
function (result) {
if (result.status === Office.AsyncResultStatus.Failed) {
console.log(result.error.message);
}
});
答案 0 :(得分:2)
问题是您的文件需要身份验证。
在桌面上使用Outlook,attachmentUrl
将被发送到Outlook客户端以进行下载和附加。由于这一切都发生在同一个上下文中,因此身份验证只是传递给您的文件服务器。
但是,使用OWA,attachmentUrl
将被发送到服务器进行下载。由于服务器未经过身份验证,因此该文件无法访问,无法下载并将其附加到邮件中。
一种可能的解决方法是提供一个可公开访问但只能在短时间内存在的临时URI。这就是Microsoft Graph API处理从OneDrive下载文件的方式。它生成的URI只能使用一次,并在几分钟后自毁。
另一种选择是使用Azure Blog Storage等中介来托管文件,并利用shared access signatures来保护对文件的访问。根据文件的数量和大小,这可能是非常便宜的,以避免滚动自己的解决方案(如每GB便宜的便士)。