我触发从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 ...");
}