如何在 Node.js Outlook 加载项中从 Outlook 邮件中获取附件内容?
How can I get attachment content from an Outlook mail in a Node.js Outlook add-in?
首先,作为一名学生,我缺乏一些经验来理解我尝试过的和我尝试过的一切。但是,我仍然觉得我已经尝试了网上几乎所有可用的解决方案。
我正在为我的公司开发一个基于 Yeoman 的 Outlook 加载项(完整 javascript 和 Node.js),我到了需要从邮件中获取附件的地步,不仅仅是附件的大小、文件类型或名称等信息,我需要完整的内容,如果可能的话,在 base64 中(以便生成包含邮件正文和附件的 .eml 文件)。
我找到了多种方法,问题是 none 其中有效:
- 首先我尝试使用凌乱的微软文档,我找到的第一个解决方案是这个:https://docs.microsoft.com/en-us/office/dev/add-ins/outlook/get-attachments-of-an-outlook-item,问题是这个解决方案我需要使用 c#,但是我的加载项是完整的js,我需要找到一个适用于JS和Node.js
的解决方案
- 然后我寻找一种解决方案,允许我以某种方式与 Exchange 服务器通信以获取附件内容,我发现这个:https://github.com/gautamsi/ews-javascript-api, but this was not working with browser oriented add-in (and I need my add-in to work on both client and browsers), so I made use of this : https://github.com/gautamsi/ews-js-api-browser. I found some code samples in the first link and here : Save outlook Email attachment using ews-javascript-api npm in node JS 帮助我构建了一些东西(使用第二个 link's example's syntax on the third link's sample code) 应该可以工作,但是到了我试图从邮件中获取附件的地步,我得到了很多来自附件的信息,但与其内容相关的任何内容都是空的,下一步我 "Load" 文件 returns 来自 "service" 和 "the document is empty" 的错误 500,并且我还不知道为什么。
- 最后,我试图退后一步,查看 google for office api 以及如何获取附件内容,我发现了这个 link : https://blog.mastykarz.nl/office-365-unified-api-mail/ 看起来几乎是真的,我是对的:根据微软文档,我需要一个令牌才能使 office 365 api url、Azure AD 提供的令牌正常工作当管理员授权您获取它时(或者我认为,这是 Microsoft 文档比较混乱的部分)。问题是,在 Azure AD 上连接时,我在网站的屏幕上显示错误(绝对没有关于该错误的详细信息),并且我需要访问以获取令牌的一些地方无法正常工作,显示另一个错误消息没有任何详细信息或从未加载。
我已经尽可能地减少了我的问题的大小,不想让你淹没在信息、示例代码、links 和图片中所以,如果它看起来太长太抱歉了细节不佳。
感谢您抽出宝贵时间,随时提出您想到的任何解决方案、建议或建议!
做同样的事情,我找到的解决方案:
- 在客户端获取exchangeToken (
Office.context.mailbox.getCallbackTokenAsync()
)
- 将令牌、附件 ID、电子邮件 ID 发送到服务器(在我的情况下为 C#,在您的情况下为 nodejs)
- 使用 EWS Managed API 2.0 或在您的情况下 ews-javascript-api 来处理加载电子邮件 mime 内容(包含电子邮件 + 附件)或附件 mime 内容。
- 将文件上传到其他服务或用它做任何你想做的事。
在我为服务器端切换到 C# 之前,我使用的是 nodejs 测试,所以如果您有任何问题,请随时提问。
首先,作为一名学生,我缺乏一些经验来理解我尝试过的和我尝试过的一切。但是,我仍然觉得我已经尝试了网上几乎所有可用的解决方案。
我正在为我的公司开发一个基于 Yeoman 的 Outlook 加载项(完整 javascript 和 Node.js),我到了需要从邮件中获取附件的地步,不仅仅是附件的大小、文件类型或名称等信息,我需要完整的内容,如果可能的话,在 base64 中(以便生成包含邮件正文和附件的 .eml 文件)。
我找到了多种方法,问题是 none 其中有效:
- 首先我尝试使用凌乱的微软文档,我找到的第一个解决方案是这个:https://docs.microsoft.com/en-us/office/dev/add-ins/outlook/get-attachments-of-an-outlook-item,问题是这个解决方案我需要使用 c#,但是我的加载项是完整的js,我需要找到一个适用于JS和Node.js 的解决方案
- 然后我寻找一种解决方案,允许我以某种方式与 Exchange 服务器通信以获取附件内容,我发现这个:https://github.com/gautamsi/ews-javascript-api, but this was not working with browser oriented add-in (and I need my add-in to work on both client and browsers), so I made use of this : https://github.com/gautamsi/ews-js-api-browser. I found some code samples in the first link and here : Save outlook Email attachment using ews-javascript-api npm in node JS 帮助我构建了一些东西(使用第二个 link's example's syntax on the third link's sample code) 应该可以工作,但是到了我试图从邮件中获取附件的地步,我得到了很多来自附件的信息,但与其内容相关的任何内容都是空的,下一步我 "Load" 文件 returns 来自 "service" 和 "the document is empty" 的错误 500,并且我还不知道为什么。
- 最后,我试图退后一步,查看 google for office api 以及如何获取附件内容,我发现了这个 link : https://blog.mastykarz.nl/office-365-unified-api-mail/ 看起来几乎是真的,我是对的:根据微软文档,我需要一个令牌才能使 office 365 api url、Azure AD 提供的令牌正常工作当管理员授权您获取它时(或者我认为,这是 Microsoft 文档比较混乱的部分)。问题是,在 Azure AD 上连接时,我在网站的屏幕上显示错误(绝对没有关于该错误的详细信息),并且我需要访问以获取令牌的一些地方无法正常工作,显示另一个错误消息没有任何详细信息或从未加载。
我已经尽可能地减少了我的问题的大小,不想让你淹没在信息、示例代码、links 和图片中所以,如果它看起来太长太抱歉了细节不佳。
感谢您抽出宝贵时间,随时提出您想到的任何解决方案、建议或建议!
做同样的事情,我找到的解决方案:
- 在客户端获取exchangeToken (
Office.context.mailbox.getCallbackTokenAsync()
) - 将令牌、附件 ID、电子邮件 ID 发送到服务器(在我的情况下为 C#,在您的情况下为 nodejs)
- 使用 EWS Managed API 2.0 或在您的情况下 ews-javascript-api 来处理加载电子邮件 mime 内容(包含电子邮件 + 附件)或附件 mime 内容。
- 将文件上传到其他服务或用它做任何你想做的事。
在我为服务器端切换到 C# 之前,我使用的是 nodejs 测试,所以如果您有任何问题,请随时提问。