如何触发特定 outlook VSTO 插件的 OnRead 事件?

How to trigger OnRead event for particular outlook VSTO addin?

我想测试(fuzz)outlook 插件。主要思想是开发插件(邮件生成器),它将 emulate\trigger 打开邮件以供我的目标插件处理。是否可以为目标插件发出 OnRead 事件?

我认为我的代码一定能解决问题,但事实并非如此:

string progId = "target_addin_progid";
var obj = (OUTLOOKADDINLib.ItemNotifications) Application.CreateObject(progId);
var msg = Application.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
msg.Body = "email body";
obj.ItemRead(msg);

我使用调试器来确保上述代码不会到达目标插件处理逻辑。如何使用插件模拟邮件阅读?

Outlook 对象模型不提供任何方法或 属性 来立即触发事件。您需要重现触发事件的条件。

您可以模拟 MailItem 的 Read 事件,方法是将其保存在磁盘上并将 Selection 从另一项更改为触发事件所需的项,或者只是简单地尝试通过调用 MailItem class 的 Display 方法在检查器 window 中打开它。