使用Outlook Web加载项记录传入和传出的电子邮件

问题描述 投票:1回答:1

我有一个基于VSTO COM的有效Outlook外接程序,该外接程序在桌面Outlook上拦截所有传入/传出的电子邮件,然后将其用于将电子邮件的详细信息保存到SQL数据库中。以下是我使用外接程序采取的步骤的简要说明:

  1. 拦截传入/传出的电子邮件并在电子邮件上添加自定义GUID作为用户属性
  2. 在云上调用我的自定义Web API的端点,并发送包含GUID(如上保存)之类的详细信息以及其他与邮件相关的ID和详细信息的XML
  3. API端点将详细信息保存到SQL数据库中,并将响应返回给Outlook,以使Outlook不冻结
  4. Windows服务在后台运行,并监视此SQL数据库中的电子邮件,并使用GUID用户属性对Exchange或Office 365进行Web API调用以查找电子邮件,然后将其保存在需要的位置。

我无法直接通过VSTO加载项的API调用来保存电子邮件,因为API中发生了一些自定义的耗时逻辑,因此我无法在此期间保持Outlook冻结。

是否可以使用较新的Outlook Web外接程序创建类似内容?

outlook vsto exchangewebservices outlook-web-addins
1个回答
0
投票

种类-您可以拦截传出的消息,但是如果这样做,您的插件将不符合在商店中发布的资格。

在VSTO插件中,这仍然容易得多。您不能从辅助线程访问Outlook对象模型,但是仍然可以运行执行其他操作的代码。完成后,可以通过打开需要在启动辅助线程之前保存的条目ID来打开需要处理的消息,从而访问主线程上的OOM。请注意,无法从辅助线程访问各种对象是OOM特定的-可以从辅助线程访问扩展MAPI对象,但是扩展MAPI需要C ++或Delphi。在其他语言(包括所有.Net语言)中,您可以使用Redemption及其对象的RDO系列-您要做的就是将Application.Session.MAPIOBJECT属性的值保存在专用变量中,然后保存在辅助变量中线程创建RDOSession对象的实例,并将其MAPIOBJECT属性设置为您在主线程上保存的变量(有关更多详细信息,请参见http://www.dimastr.com/redemption/faq.htm#Threads)。

© www.soinside.com 2019 - 2024. All rights reserved.