Outlook VSTO Add In - VB.net - PullRequest
       95

Outlook VSTO Add In - VB.net

0 голосов
/ 17 апреля 2019

Мне было поручено создать надстройку, которая управляет оповещениями для почтового ящика.По сути, надстройке необходимо постоянно сканировать входящие сообщения, а после того, как определенное количество писем было получено в течение определенного периода времени, необходимо отправить сообщение на другой почтовый ящик.

Может, кто-нибудь подскажет, с чего начать?

Если у вас есть альтернативные предложения, я открыт для них, например, для создания макроса.Все, что кажется проще и эффективнее.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Лучше всего отслеживать событие Items.ItemAdd для коллекции папок Inbox's Folder.Items. Это сработает для каждого электронного письма, добавленного в папку «Входящие» (за исключением случаев, когда добавлено очень большое количество), и может быть более надежным, чем наблюдение за событием Application.NewMailEx. Вы можете сделать перекрестную ссылку на время возникновения события в соответствии с заданным периодом времени и при необходимости обработать его.

0 голосов
/ 17 апреля 2019

У меня был проект с надстройками Outlook VSTO несколько лет назад.Должна быть возможность написать этот код в событии PageLoad надстройки.

Вот пример цикла calenderItems для папки по умолчанию - зацикливание писем происходит одновременно:

        Microsoft.Office.Interop.Outlook.Application oApp = null;
        Microsoft.Office.Interop.Outlook.NameSpace mapiNamespace = null;
        Microsoft.Office.Interop.Outlook.MAPIFolder calendarFolder = null;
        Microsoft.Office.Interop.Outlook.Items outlookCalendarItems = null;

        oApp = new Microsoft.Office.Interop.Outlook.Application();
        mapiNamespace = oApp.GetNamespace("MAPI");


        calendarFolder = mapiNamespace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar);


        outlookCalendarItems = calendarFolder.Items;


        outlookCalendarItems.IncludeRecurrences = true;
        oApp = new Microsoft.Office.Interop.Outlook.Application();
        mapiNamespace = oApp.GetNamespace("MAPI");

        try
        {

            foreach (Folder fold in mapiNamespace.Folders)
            {                  

                if ( fold != null && fold.FolderPath != null)
                {


                    if (fold.FolderPath.Contains(emailAccount))
                    { //only own folders

                                  // ------------- you can loop the folderitems here -------------                  


                    }
                }
            }
        }
        catch (System.Exception ex)
        {
        }

Внимание: вы будетеприходится очень часто активировать надстройку vsto при ее тестировании.Вы можете найти реактивацию аддинов в outlook. Addins / com addins

Надеюсь, что это может помочь вам.

...