实际上关闭Outlook邮件项目的事件

lc.*_*lc. 1 .net events outlook interop

我有一个使用Microsoft.Office.Interop.Outlook互操作程序集的.NET应用程序。

该应用程序将打开一个新的Outlook MailItem,然后希望记录日志条目(如果已发送电子邮件(通过用户单击“发送”),或者知道是否已关闭而不发送电子邮件(另存为草稿或已丢弃)。

通过订阅该ItemEvents_10_Event.Send事件,可以很容易地完成发送项目的时间。

但是,要捕获关闭项目时的状态,我只能找到该ItemEvents_10_Event.Close事件。但是,这个事件触发时,该项目是CLOS 荷兰国际集团,而不是当产品CLOS 。更糟糕的是,我收到事件,用户仍然有机会取消操作。发生的是:

  1. 我的应用程序打开新的MailItem
  2. 用户单击关闭按钮。
  3. ItemEvents_10_Event.Close被解雇了
  4. 控件返回到Outlook,然后显示Outlook的“您是否要保存更改(是/否/取消)”对话框。
  5. 用户按取消。(我没有收到通知)
  6. 然后,用户可以做任何想做的事情,包括发送电子邮件或再次关闭它。

有没有一种方法可以:

  • 订阅该通知我,当该项目是CLOS事件,不关闭?(最好)
  • 或者,知道用户在上述情况下何时按“取消”?(虽然可以,但是可以)

奖金是,如果如果邮件是我能区分关闭和废弃 VS 保存为草稿

小智 5

使用检查器关闭事件:

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)
}
Run Code Online (Sandbox Code Playgroud)

要解决关闭关闭问题,您可以检查mailItem send事件。如果已触发,则“关闭”,否则,用户关闭窗口而不发送电子邮件。