我有一个基于VSTO COM的有效Outlook外接程序,该外接程序在桌面Outlook上拦截所有传入/传出的电子邮件,然后将其用于将电子邮件的详细信息保存到SQL数据库中。以下是我使用外接程序采取的步骤的简要说明:
我无法直接通过VSTO加载项的API调用来保存电子邮件,因为API中发生了一些自定义的耗时逻辑,因此我无法在此期间保持Outlook冻结。
是否可以使用较新的Outlook Web外接程序创建类似内容?
种类-您可以拦截传出的消息,但是如果这样做,您的插件将不符合在商店中发布的资格。
在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)。