在开发Outlook VSTO(Visual Studio Tools for Office)插件时,如何识别邮件的创建来源是一个常见但颇具挑战的问题。特别是当用户通过Windows Explorer的右键菜单选择“发送到 -> 邮件收件人”时,Outlook会以模态窗口的方式打开一个新的MailItem。今天,我们将深入探讨如何在C#编写的VSTO插件中检测这种特定场景。
背景
在Outlook中,MailItem的创建方式多种多样,比如直接在Outlook界面新建邮件、通过邮件模板创建或者如前文所述通过Windows Explorer的“发送到”功能。识别邮件的创建来源对于插件的行为至关重要,因为不同的创建来源可能需要不同的处理逻辑。
挑战
Outlook的Inspector窗口并没有直接提供一个属性来标识邮件的模态状态或者它的创建上下文。因此,我们需要通过间接方法来确定邮件的来源。
方法论
使用Inspectors.NewInspector事件
Inspectors.NewInspector事件在新邮件窗口打开时触发,但值得注意的是,通过Simple MAPI(即通过“发送到 -> 邮件收件人”)创建的邮件窗口并不会触发此事件。利用这一特点,我们可以:
- 跟踪
Inspector