Office365 Outlook Web加载项,正在检索附件

Office365 Outlook Web加载项,正在检索附件,office365,outlook-addin,outlook-restapi,outlook-web-addins,Office365,Outlook Addin,Outlook Restapi,Outlook Web Addins,我正试图找出如何从电子邮件中检索附件。 我已经有了一个工作的web插件,可以访问邮件的几个属性,例如主题、收件人、发件人、正文等 现在我还想检索附件,并弄清楚这是如何完成的,我下载了示例项目 但是我不能让它工作。在构建和调试部分中,它说将名为AttachmentExampleService的项目设置为Action=start。 但这似乎是不正确的,因为此项目是解决方案中的rest服务,而不是驱动界面的项目-虽然我尝试过,但它只是使项目无法使用,因为它显然不会启动浏览器或Outlook客户端,所有

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

现在我还想检索附件,并弄清楚这是如何完成的,我下载了示例项目

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

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

但是,无论是浏览器还是Outlook客户端(本例中为2016),外接程序都无法正常工作

名为“Test Attachments”(测试附件)的按钮按预期显示,但按下该按钮始终会产生相同的结果,即“未知错误” 出现意外错误:0--“

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

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

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

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

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


感谢所有帮助和/或提示:)

很抱歉给您带来不便,我们在此处提供了更新版本:


如果您在这方面遇到问题,请告知我们。

很抱歉给您带来不便,我们在此处提供了更新版本:


如果您在这方面遇到问题,请告诉我们。

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

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


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

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

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


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

该示例可以工作,但仅在Outlook客户端中-在浏览器中,它无法完成任务,可能是由于某些被抑制的登录框。我认为这是有点不幸的是,在这个示例中涉及到所有这些Azure/OneDrive的东西,因为这真的很难找到与我需要的东西相关的部分,即检索附件并对其进行处理,例如将它们存储到磁盘或其他任何东西。-似乎此示例通过graphClient检索附件,我甚至没有在代码中使用它,因为我显然不需要它。也许我只需要查看SaveAttachmentsWithDistinctTokens方法并尝试忽略其余部分?此示例可以工作,但仅在Outlook client中-在浏览器中它永远无法完成任务,可能是由于某些被抑制的登录框。我认为这是有点不幸的是,在这个示例中涉及到所有这些Azure/OneDrive的东西,因为这真的很难找到与我需要的东西相关的部分,即检索附件并对其进行处理,例如将它们存储到磁盘或其他任何东西。-此示例似乎通过以下方式检索附件: