Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Уведомление о новом письме в Outlook

#c_sharp #outlook


Имеется плагин в outlook для уведомления и новом письме в дополнительном ящике. Но
проблема в том что когда приходит новое письмо и Outlook находится в свёрнутом состоянии
то уведомлении не отображается

Код ниже:

private void ThisAddIn_Startup(object sender, EventArgs e) {

    var ns = Application.GetNamespace("MAPI");
    const string recipientName = "mymail@mydomain.com";

    var recip = ns.CreateRecipient(recipientName);
    recip.Resolve();

    if (!recip.Resolved) return;
    var inboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox);
    inboxFolder.Items.ItemAdd += InboxFolderItemAdded;

}

private static void InboxFolderItemAdded(object item) {
    if (item is Outlook.MailItem) {
        MessageBox.Show("Новое сообщение", "new message", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}


Прошу оказать помощь в решении проблемы
    


Ответы

Ответ 1



Последуйте официальному примеру: сделайте Items полем. Проблема в том, что подписка действует до тех пор, пока объект жив. А после выхода из метода ThisAddIn_Startup() переменная inboxFolder и, соответственно, поле Items становится доступным для сборки мусора. Также имейте в виду, что согласно документации на это событие, оно не триггерится, если приходит сразу много сообщений (насколько много -- не уточняется :)). Outlook.Items _items; private void ThisAddIn_Startup(object sender, EventArgs e) { var ns = Application.GetNamespace("MAPI"); const string recipientName = "mymail@mydomain.com"; var recip = ns.CreateRecipient(recipientName); recip.Resolve(); if (!recip.Resolved) return; var inboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox); _items = inboxFolder.Items; _items.ItemAdd += InboxFolderItemAdded; } private static void InboxFolderItemAdded(object item) { if (item is Outlook.MailItem) { MessageBox.Show("Новое сообщение", "new message", MessageBoxButtons.OK, MessageBoxIcon.Information); } }

Комментариев нет:

Отправить комментарий