outlook - 使用 Outlook Web 加载项记录传入和传出电子邮件
问题描述
我有一个有效的基于 VSTO COM 的 Outlook 加载项,它拦截桌面 Outlook 上的所有传入/传出电子邮件,然后用于将电子邮件的详细信息保存到 SQL 数据库中。下面是我使用加载项所采取的步骤的简要说明:
- 拦截传入/传出电子邮件并将自定义 GUID 添加为电子邮件上的用户属性
- 调用云上我的自定义 Web API 的端点并发送一个 XML,其中包含 GUID(保存在上面)和其他与邮件相关的 ID 和详细信息等详细信息
- API 端点将详细信息保存到 SQL 数据库中,并将响应返回给 Outlook,这样 Outlook 就不会冻结
- Windows 服务在后台运行并监视此 SQL 数据库中的电子邮件项目,并对 Exchange 或 Office 365 进行 Web API 调用,以使用 GUID 用户属性查找电子邮件,然后将其保存在需要的位置。
我无法通过 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)。
推荐阅读
- sql - 关于如何选择数据的 SQL 查询
- javascript - 在 SendBird 中上传图片作为新的个人资料图片
- sql - 在 Count 语句中显示空值 - SQL Server
- php - 给关键词一个排名
- r - R空间多边形长度轴
- java - 无法使用 access_token 访问资源:spring boot Oauth2
- amazon-web-services - 根据特定标签获取 AWS 资源成本
- c# - 修复了列表和详细信息页面的标题。Xamarin 表单
- javascript - JQuery Ajax,我可以使用标签中的 id 作为 ajax 调用中的变量吗?
- c# - 我的插入语句不适用于 C# 中的 Excel