我有一个使用Microsoft.Office.Interop.Outlook
互操作程序集的 .NET 应用程序。
应用程序打开一个新的 Outlook MailItem
,然后如果电子邮件已发送(通过用户单击“发送”)记录日志条目,或者知道它是否在未发送的情况下关闭(保存为草稿或丢弃)。
通过订阅ItemEvents_10_Event.Send
事件可以很容易地捕获发送项目的时间。
但是,为了在项目关闭时捕获,我只能找到ItemEvents_10_Event.Close
事件。但是,此事件在项目关闭时触发,而不是在项目关闭时触发。更糟糕的是,在我收到事件后,用户仍有机会取消操作。会发生什么:
- 我的应用程序打开了新的
MailItem
. - 用户单击关闭按钮。
ItemEvents_10_Event.Close
被解雇。- 控制权返回到 Outlook,然后显示 Outlook 的“是否要保存更改(是/否/取消)”对话框。
- 用户按下取消。(我没有收到通知)
- 然后,用户可以做任何他们想做的事情,包括发送电子邮件或再次关闭它。
有没有办法:
- 订阅一个在项目关闭而不是关闭时通知我的事件?(最好的)
- 或者,知道用户在上述场景中何时按下取消?(一个黑客,但它会做)
如果我可以区分电子邮件是关闭并丢弃还是另存为草稿,那将是一个奖励。