代码之家  ›  专栏  ›  技术社区  ›  Aidal

Outlook Web加载项,检索附件

  •  0
  • Aidal  · 技术社区  · 8 年前

    我想知道如何从电子邮件中检索附件。 我已经有了一个工作的web插件,可以访问邮件的几个属性,例如主题、收件人、发件人、正文等。

    现在,我还想检索附件并弄清楚这是如何完成的,我下载了示例项目 https://github.com/OfficeDev/Outlook-Add-in-Javascript-GetAttachments .

    但我不能让它工作。在本节下 构建和调试 上面说要设置名为 AttachmentExampleService附件 动作=开始。 这似乎是不正确的,因为这个项目是解决方案中的rest服务,而不是驱动界面的项目-虽然我尝试过,但它只是使项目无法使用,因为它显然不会启动浏览器或Outlook客户端,所有这一切都取决于哪个客户端被设置为项目的客户端。

    如果我将nothing设置为Action=start(默认设置),则当我从VS2017运行解决方案时,正确的web应用程序将启动,并且预期的按钮也会显示在浏览器和Outlook客户端中。

    然而,无论是浏览器还是Outlook客户端(本例中为2016),加载项都无法正常工作。

    一个名为“测试附件”的按钮按预期显示,但按下它总是会产生相同的结果,即 未知错误 出现意外错误:0--“。

    我可以在代码(AttachmentExampleWeb项目中的Home.js)中看到,“0”是XMLHttpRequest对象的status属性,在“-”之后应该是XMLHttpRequest对象的statusText属性,在本例中为空。

    我还尝试让rest服务向文件写入一些输出,但在这方面什么也没有发生——我认为while进程不会走到这么远。

    我还尝试为项目设置正确的端口(javascript文件中ajax调用的url中提到了一个端口),但似乎没有什么不同。

    我还尝试让Fiddler运行来嗅探正在发送的内容,但我看不到任何可以理解并确定是错误的内容。

    有人知道这里可能有什么问题吗? 或者是否有更好/更新的代码示例?

    感谢所有帮助和/或指点:)

    2 回复  |  直到 5 年前
        1
  •  2
  •   Jason Johnston    8 年前

    好的,那么在这里解决我认为是您真正的问题,“如何访问外接程序中的附件?”

    Outlook加载项API不允许直接访问附件内容。它提供有关附件(名称、大小、id)的元数据,但不提供位本身。您必须使用该元数据来使用EWS或REST检索文件的内容。通常,由于文件可能很大,下载它们可能需要一些时间,外接程序不会从外接程序的JS代码中下载,而是将元数据推送到处理该任务的后端服务。

    Outlook团队提到的示例使用这种方法。如果您对编写OneDrive的内容不感兴趣(这也是示例中使用图形客户端和SSO组件的原因),那么可以, SaveAttachmentsWithDistinctTokens 是一个值得一看的地方。您会注意到它使用了外接程序检索到的REST标记(通过 getCallbackTokenAsync )通过Outlook REST API获取附件数据。然后,您可以对结果执行任何操作:)

        2
  •  1
  •   Outlook Add-ins Team - MSFT    8 年前

    很抱歉给您带来不便,我们在此处提供了更新版本: https://github.com/OfficeDev/outlook-add-in-attachments-demo/

    如果您遇到问题,请告诉我们。