Application.ItemSend未调用

问题描述 投票:0回答:1

我触发从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_CloseApplication_ItemSend都没有被调用没有在邮件中输入任何文本

即使用户未在邮件中输入任何文本,是否有机会接收事件?

EDIT我注意到,即使用户确实输入了一些文本,事件也不会每次都被调用。那么如何实现始终调用事件?

c# outlook office-interop
1个回答
0
投票

您需要确保两个事件源都处于活动状态并在全局范围内声明(不被垃圾收集器刷掉)。即使没有在电子邮件中输入任何文本,它们也会被触发。

// 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 ...");
}
© www.soinside.com 2019 - 2024. All rights reserved.