Outlook 加载项无法向邮件添加附件

Outlook Add-in unable to add attachments to message

尝试从 Outlook 加载项向电子邮件添加附件时返回以下错误:

status: failed
code:9007    
message:"The attachment cannot be added to the item."    
name:"AttachmentUploadGeneralFailure"

在任何浏览器中使用 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);
        }
    });

问题是您的文件需要验证。

在桌面上使用 Outlook,attachmentUrl 正在发送到 Outlook 客户端进行下载和附加。由于这一切都发生在同一上下文中,因此身份验证只是传递到您的文件服务器。

然而,对于 OWA,attachmentUrl 被发送到 Server 进行下载。由于服务器未经过身份验证,因此无法访问该文件,也无法将其下载并附加到邮件中。

一种可能的解决方法是提供一个可公开访问但仅存在很短时间的临时 URI。这就是 Microsoft Graph API 处理从 OneDrive 下载文件的方式。它生成一个只能使用一次的 URI,并在几分钟后自毁。

另一种选择是使用 Azure Blog Storage to host the files and leverage shared access signatures 等中介来保护对文件的访问。根据您的文件的数量和大小,这可能是一种非常便宜的避免推出您自己的解决方案的方法(就像每 GB 的一分钱一样便宜)。