Application.ItemSend не вызывается - PullRequest
0 голосов
/ 04 мая 2020

Я запускаю создание письма из своего приложения 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 оба не являются вызывается, когда пользователь нажимает «Отправить» , не введя текст в сообщение .

Есть ли возможность получить события, даже если пользователь не вводил текст в почта?

РЕДАКТИРОВАТЬ Я заметил, что даже когда пользователь вводил какой-то текст, события не вызывались каждый раз. Так как же мне добиться, чтобы события назывались всегда?

1 Ответ

1 голос
/ 04 мая 2020

Необходимо убедиться, что оба источника событий живы и объявлены в глобальной области (не удаляются сборщиком мусора). Все они увольняются, даже если текст не введен в электронное письмо.

// 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 ...");
}
...