【问题标题】:Outlook Web Addin, retrieving attachmentsOutlook Web 插件,检索附件
【发布时间】:2018-06-12 06:55:14
【问题描述】:

我正试图弄清楚如何从电子邮件中检索附件。 我已经有一个可以访问邮件的多个属性(例如主题、收件人、发件人、正文等)的有效 Web 插件。

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

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

如果我没有设置 Action = start(这是默认设置),当我从 VS2017 运行解决方案时,正确的 Web 应用程序会启动,并且预期的按钮也会同时出现在浏览器和 Outlook 客户端中。

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

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

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

我也尝试让 rest 服务将一些输出写入文件,但在这方面根本没有发生任何事情 - 我认为 while 进程不会走到这一步。

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

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

有人知道这里可能出现什么问题吗? 还是我还没有找到更好/更新的代码示例?

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

【问题讨论】:

  • 根据我们的on-topic 指导,“有些问题仍然是题外话,即使它们属于上面列出的类别之一:...向我们提问的问题推荐或查找书籍、工具、软件库、教程或其他场外资源是题外话..."

标签: office365 outlook-addin outlook-restapi outlook-web-addins


【解决方案1】:

好的,所以在这里解决我认为您真正的问题,“我如何访问加载项中的附件?”

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

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

【讨论】:

  • 是的,我从其他一些帖子中发现,我无法通过 Web 插件的客户端检索任何内容。所以我改变了我的服务器端 api 来通过 EWS 托管 API 来处理这部分。我会标记为已回答并感谢您的跟进。
【解决方案2】:

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

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

【讨论】:

  • 该示例有效,但仅在 Outlook 客户端中有效 - 在浏览器中它永远不会完成任务,可能是由于某些抑制的登录框。我认为这个示例中涉及所有这些 Azure/OneDrive 的东西有点不幸,因为它确实很难找到与我需要的实际有关的部分,即检索附件并用它们做一些事情,例如将它们存储到磁盘或其他任何东西。 - 这个示例似乎通过 graphClient 检索附件,我什至没有在我的代码中使用它,因为我没有明显的需要。
  • 也许我只需要查看方法 SaveAttachmentsWithDistinctTokens 并尝试忽略其余部分?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多