如何从Microsoft Outlook 加载项检索完整的 MIME 邮件?



我正在开发一个Outlook Web Access加载项,我想在其中访问电子邮件的所有数据,包括发件人地址,收件人地址,主题和发送日期等。我还想下载整个消息文件。我找到了一个Outlook Web REST API,但不知道如何使用它。

任何人都可以解释如何使用此 API 检索整个 MIME 消息并提供示例?

我想您想以MIME格式(又名*.eml文件类型)获取当前电子邮件。如果是这样,请参阅答案。

1. 交换网络服务 (EWS)。上一个 2019 年

您必须使用 Exchange Web 服务 (EWS),有两种方法:

  1. 通过makeEwsRequestAsync()方法在JavaScript中执行此操作,方法是在响应的MimeContent标记的请求和进程内容中设置IncludeMimeContent属性(它是base64,因此您可能需要解码)。

    但它不适用于 iOS/Android(链接),JavaScript API 的电子邮件大小限制为 1 MB(请参阅 JavaScript API 的所有限制),因此获取和解码电子邮件的实现必须在后端运行(这可能是服务器不必要的负载)。因此,您可能会忘记选项#1并开始阅读下一个选项。

  2. 发送 EWS 请求并在后端处理响应。但为此,您需要获取回调令牌(用于从后端进行身份验证)、电子邮件的项目 ID 和 EWS URL(请参阅这篇文章,了解如何在加载项中获取它们)。

话虽如此,还是有消息说了。自 2018 年 7 月以来,Microsoft仅发布 EWS 的安全更新(请参阅官方声明)。他们逐步淘汰它,转而使用Microsoft Graph,这是Office数据的新网关,到目前为止,它不支持以EML格式导出电子邮件。该功能承诺在 2018 年底之前进入测试版。

2. Microsoft图。从2019年开始

EWS已经死了,Microsoft图是要走的路。Microsoft的人承诺在Outlook Mail REST API中公开整个电子邮件MIME流(现在应该处于测试阶段)。因此,请密切关注Outlook mail REST API。

注意: MS Graph 仅适用于 Exchange Online(云中的 Office 365)或混合部署中的 Exchange 本地(至少需要与 Office 365 集成的 Exchange 2016 累积更新 3 (CU3) 本地服务器)。

1. 要获取消息详细信息,您可以使用 office.js 中提供的 javascript API。有关项目上可用的单个 API 的详细信息,请参阅链接:

https://dev.office.com/reference/add-ins/outlook/1.5/Office.context.mailbox.item?product=outlook&version=v1.5

2.获取整个消息文件。GetMessage API 不为您提供.msg文件,但它会获取消息的所有属性,您可以使用它来获取有关消息的其他详细信息,这些详细信息不是由 javascript API 直接提供的。

3.有一种方法可以使用以下两个步骤获取.eml文件:

步骤1:使用JS接口获取EWS回调令牌 getCallbackTokenAsync([options],回调)。参考链接:

https://dev.office.com/reference/add-ins/outlook/1.5/Office.context.mailbox?product=outlook&version=v1.5

步骤2:使用来自服务器的此令牌发出EWS请求,以获取将IncludeMimeContent设置为true的项目,并将响应另存为.eml文件。参考链接:

https://msdn.microsoft.com/en-us/library/office/aa566013(v=exchg.150).aspx

最新更新