我有一个使用Microsoft.Office.Interop.Outlook
互操作程序集的.NET应用程序。
应用程序打开一个新的Outlook MailItem
,然后想要记录一个日志条目如果发送了电子邮件(通过用户点击发送),或者知道是否它在没有发送的情况下关闭(保存为草稿或丢弃)。
通过订阅ItemEvents_10_Event.Send
事件,可以轻松完成项目发送时的捕获。
但是,为了捕获项目关闭时,我只能找到ItemEvents_10_Event.Close
事件。但是,当项目为 时,此事件会触发,而当项目为 ed 时,会触发。更糟糕的是,用户在收到活动后仍有机会取消操作。会发生什么:
MailItem
。ItemEvents_10_Event.Close
被解雇。有没有办法:
如果我能够区分电子邮件已关闭并被丢弃 vs 保存为草稿,则可获得奖励。
答案 0 :(得分:4)
使用检查员关闭事件:
inspector = mailItem.GetInspector;
((InspectorEvents_10_Event) inspector).Close += CloseEventHandler;
void CloseEventHandler(){
//execute only when email window is closed or closing
// without problem with confirmation dialog (yes/no/cancel)
}
要解决关闭或已关闭问题,您可以检查mailItem发送事件。如果已经解雇,那么"关闭"否则,用户关闭窗口而不发送电子邮件。