Outlook Web 插件,检索附件

Outlook Web Addin, retrieving attachments

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

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

不过我无法让它工作。在 Build and debug 部分下,它表示将名为 AttachmentExampleService 的项目设置为具有 Action = start。 这似乎是不正确的,因为这个项目是解决方案中的其余服务,而不是驱动界面的项目 - 我确实尝试过,但它只会使项目无法使用,因为它显然不会启动浏览器或 Outlook client all 取决于哪个被设置为项目的客户端。

如果我未对 Action = start(默认设置)进行任何设置,当我 运行 来自 VS2017 的解决方案时,正确的 Web 应用程序将启动,并且预期的按钮也会出现在浏览器和 Outlook 客户端中。

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

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

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

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

我也曾尝试为项目设置正确的端口(在 url 中提到了一个端口,用于 javascript 文件中的 ajax 调用)但它看起来没有区别。

我也尝试让 Fiddler 运行 嗅探正在发送的内容,但我看不到任何我能理解的东西,并确定在这种情况下是错误的。

有谁知道这里的问题是什么? 或者有没有我只是没找到的 better/newer 代码示例?

所有帮助and/or 指点感谢:)

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

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

好的,所以在这里解决我认为是您真正的问题,"how do I access attachments in an add-in?"

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

Outlook 团队提到的样本使用了这种方法。如果您对写入 OneDrive 内容不感兴趣(这是 Graph 客户端和示例的 SSO 组件的原因),那么是的,SaveAttachmentsWithDistinctTokens 是值得一看的地方。您会注意到它使用加载项检索的 REST 令牌(通过 getCallbackTokenAsync)通过 Outlook REST API 获取附件数据。然后你可以对结果做任何你想做的事情:)