我触发从我的WPF应用程序撰写邮件。
我注册发送/关闭事件如下:
_mailItem.Application.ItemSend += Application_ItemSend;
Inspector inspector = _mailItem.GetInspector;
((InspectorEvents_10_Event)inspector).Close += MailItem_Close;
// ...
private void MailItem_Close()
{
Log.Debug("MailItem_Close ...");
}
private void Application_ItemSend(object Item, ref bool Cancel)
{
Log.Debug("Application_ItemSend ...");
}
我注意到,当用户在邮件中没有输入任何文本的情况下点击"发送"时,MailItem_Close
和Application_ItemSend
都不会被调用。
即使用户没有在邮件中输入任何文本,也有机会接收事件吗?
EDIT我注意到,即使用户确实输入了一些文本,事件也不会每次都被调用。那么,我如何才能实现事件总是被调用呢?
您需要确保两个事件源都是活动的,并在全局范围内声明(而不是被垃圾收集器清除(。即使没有在电子邮件中输入文本,他们也会被解雇。
// at the class level you need to define both objects
Outlook.Application app;
Inspector inspector;
// then you can subscribe to the events
app.ItemSend += Application_ItemSend;
inspector = _mailItem.GetInspector;
((InspectorEvents_10_Event)inspector).Close += MailItem_Close;
private void MailItem_Close()
{
Log.Debug("MailItem_Close ...");
}
private void Application_ItemSend(object Item, ref bool Cancel)
{
Log.Debug("Application_ItemSend ...");
}