代码之家  ›  专栏  ›  技术社区  ›  Bart Loos

Outlook加载项无法将附件添加到邮件

  •  2
  • Bart Loos  · 技术社区  · 8 年前

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

    在任何浏览器中使用Outlook on the web都会发生这种情况。在Outlook 2013/2016桌面客户端上,附件添加成功。

    该文件托管在加载项运行的同一域上,使用HTTPS和有效证书(非自签名)。使用HTTP而不是HTTPS时也不起作用。我可以通过在浏览器中输入URL下载文件。没有向服务器发出下载附件的“GET”请求。

    这个问题似乎特定于我的web服务器。如果我尝试从互联网上附加一个随机文件,效果很好。

    mailbox.item.addFileAttachmentAsync(
        attachmentUrl,
        fileName,
        function (result) {
            if (result.status === Office.AsyncResultStatus.Failed) {
                console.log(result.error.message);
            }
        });
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Marc LaFleur    8 年前

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

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

    然而,对于OWA 服务器

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

    另一种选择是使用中介,例如 Azure Blog Storage shared access signatures 以确保对文件的访问。根据文件的数量和大小,这可能是一种非常便宜的解决方案,以避免滚动您自己的解决方案(例如每GB一分钱的解决方案)。