Отслеживание и получение количества непрочитанных сообщений в Microsoft Outlook

      Очень часто бывает полезно организовать взаимодействие вашей программы с Microsoft Office (а также воспользоваться массой встроенных в него классов). При помощи сборок, поставляемых с продуктами Office, вы можете выполнять самые разнообразные операции, в том числе те, к которым пользователь, работавший ранее с программами этого пакета, уже привык. Рассмотрим взаимодействие с Outlook в контексте приложения .NET. Для реализации данной задачи используется объектная библиотека «Microsoft Word 14.0 Object Library».
      Создайте проект «Windows Form» в «Microsoft Visual Studio», для этого запустите среду разработки и перейдите в меню Файл->Создать...->Проект. Выберете версию .Net Fraemwork и введите имя проекта.
      Перейдите в «Обозреватель решений» и найдите группу «References» которая содержит все ссылки на внешние компоненты в проекте. Сделайте клик правой клавишей мыши по данной группе и выберете из появившегося контекстного меню, пункт «Добавить ссылку…».

      У вас откроется окно «Менеджер ссылок – (имя вашего проекта)», в левой части данного окна вам будет предложено выбрать одну из категорий. Visual Studio предоставляет четыре группы для выбора.
«Сборки» — список всех компонентов платформы .NET Framework, ссылки на которые можно добавить.
«Решение» — список всех повторно используемых компонентов, созданных в локальных проектах.
«COM» — список всех COM-компонентов, ссылки на которые можно добавить.
«Обзор» — позволяет осуществлять поиск компонента в файловой системе.
      Выберете группу «Сборки» и ее подгруппу «Расширения». В центральной части окна вам будет предложен список доступных библиотек для подключения к вашему проекту. Найдите в списке библиотеку «Microsoft.Office.Interop.Outlook» и поставьте галочку рядом с именем данной библиотеки. В нижней части окна нажмите кнопку «ОК».

      После добавления библиотеки, в обозревателе решений у вас появится новый пункт «Microsoft.Office.Interop.Outlook». Для работы с добавленной ссылкой необходимо добавить следующее пространство имен с использованием директивы «using»:

  • using Outlook = Microsoft.Office.Interop.Outlook; - указывается ссылка на использование типов в пространстве имен «Microsoft.Office.Interop.Outlook», так же создается псевдоним «Outlook», этого пространства имен. 
      Сделайте двойной клик левой клавишей мыши по свободному пространству главной формы, для создания обработчика событий «Load». В редакторе кода откроется файл кода главной формы, с установкой курсора в обработчике события «Form1_Load». В данном событии выполним поиск и подключение к запущенному экземпляру «Microsoft Outlook» или создадим новый, а так же создадим обработчик событий при поступлении нового письма. Полный листинг для вставки в данный метод представлен ниже:
//Получаем экземпляр приложения Outlook          

 //Проверяем запущен ли Outlook
 if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
 {
     //Если приложение запущено, то подключаемся
     app = System.Runtime.InteropServices.Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
 }
 else
 {
     //Если приложение не запущено, то запускаем
     app = new Outlook.Application();
     Outlook.NameSpace nameSpace = app.GetNamespace("MAPI");
     nameSpace.Logon("", "", System.Reflection.Missing.Value, System.Reflection.Missing.Value);
     nameSpace = null;
 }
 
 //Добавляем метод на событие получения нового сообщения
 app.NewMailEx += 
     new Outlook.ApplicationEvents_11_NewMailExEventHandler(outLookApp_NewMailEx);
Далее необходимо добавить метод обработки события при получении нового сообщения:
private  void outLookApp_NewMailEx(string EntrylDCollection)
{
    //Получаем пространство имен MAPI
    Outlook.NameSpace nameSpace = app.GetNamespace("MAPI");

    //Заходим, используя профиль по умолчанию(без диалогового окна)
    nameSpace.Logon("", "", System.Reflection.Missing.Value, System.Reflection.Missing.Value);

    //Получение папки входящие 
    Microsoft.Office.Interop.Outlook.MAPIFolder inbox =
         nameSpace.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

    //Получение коллекции Items в папке inbox
    Outlook.Items unreadItems = inbox.Items.Restrict("[Unread]=true");            

    MessageBox.Show("Bы получили новое письмо!" + Environment.NewLine +
        "Непрочитанных сообщений: " + unreadItems.Count,
        "Новое письмо"
        ,MessageBoxButtons.OK);  
}
Так же необходимо в класс главной формы добавить следующую переменную:
Outlook.Application app;
      Запустите ваш проект, нажав на клавишу «F5». У вас запустится главная форма в режиме ожидания нового письма. При поступлении нового письма вы увидите сообщение с количеством непрочитанных сообщений.

Ссылка для скачивания примера: Яндекс.Диск


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

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

Большая просьба, не писать в комментариях всякую ерунду не по теме!