Программирование >>  Автоматически обновляемые приложения 

1 ... 135 136 137 [ 138 ] 139 140 141 ... 170


Outlook

Как получить сообщения из папки Входящие?

Опять воспользуемся помощью статьи Базы Знаний How to use the Microsoft Outlook Object Library to retrieve a message from the Inbox by using Visual C# (http: support.microsoft.com/kb/310258) и напишем пример. Вы можете получить сообщения из папки Входящие при помощи библиотеки Microsoft Outlook 2007 Object Library. Запустите новый проект и добавьте ссылку на Microsoft Outlook 12 Object Library так же, как мы делали это с примерами для Excel. Далее в редакторе кода напишите код, приведенный в листинге 15.4.

\ Листинг 15.4. Получение сообщений из папки Входящие

using Systems-using System. Reflections-using Outlook = Microsoft.Office.Interop.Outlook;

лекция содержащихся в ней листов, ссылку на которую мы также должны получить для доступа к конкретному листу. Обратите внимание, что доступ к книгам и к листам мы можем получить как по их имени, так и по их порядковому номеру, причем нумерация книг и страниц в коллекции начинается с единицы, а не с нуля, как это обычно принято в .NET Framework. Для доступа к коллекциям книг и листов используется метод InvokeMember. Данный метод имеет несколько перегруженных версий. Интерес представляет второй параметр, который содержит флаг, характеризующий связывание. Как правило, используются следующие флаги:

П BindingFlags. InvokeMethod- найти метод, определить его точку входа и выполнить его, передав ему массив фактических параметров;

П BindingFlags . GetProperty - установить СВОЙСТВО;

П BindingFlags . SetProperty - ПОЛучИТЬ значение СВОЙСТВа.

Примечание

Пример находится в папке LateBinding на прилагаемом диске.



private void buttonl Click(object sender, EventArgs e) {

Запускаем приложение Outlook и инициализируем его Outlook.Application oApp = new Outlook.Application();

Получаем пространство имен MAPI

Outlook.NameSpace oNS = oApp.GetNamespace( mapi ) ;

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

Альтернативный метод входа под конкретным именем

TODO: Если используется этот метод входа, надо указать правильное имя профайла и закомментировать предыдущую строку oNS.Logon( profilename ,Missing.Value, false, true);

Получение папки Входяше (Inbox) Outlook.MAPIFolder oinbox =

oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderlnbox) ;

Получение коллекции Items в папке Inbox Outlook.Items oltems = oinbox.Items;

Получим первое сообщение

Поскольку коллекция Items folder может содержать объекты разных типов, используем явное преобразование типов при присваивании Outlook.Mailltem oMsg = (Outlook.Mailltem)oltems.GetFirst() ;

Выводим некоторые общие свойства textBoxl.Text = (oMsg.Subject);

textBoxl.Text += textBoxl.Text + oMsg.SenderName; textBoxl.Text += textBoxl.Text + oMsg.ReceivedTime; textBoxl.Text += textBoxl.Text + oMsg.Body;

Проверим наличие приложений

int AttachCnt = oMsg.Attachments.Count;

textBoxl.Text += textBoxl.Text

+ ( Attachments: + AttachCnt.ToString());

TODO: Если используется библиотека Microsoft Outlook 10.0 Object Library, раскомментировать следуюш?<[е строки /*if (AttachCnt > 0)



Показать сообщение

oMsg.Display(true); в модальном окне

Выйти

oNS.Logoff О;

Явно освободить объекты

oMsg = null;

oltems = null;

oinbox = null;

oNS = null;

oApp = null;

Примечание

Пример, в котором получаются сообщения Outlook, находится в папке Out-lookDemo на прилагаемом диске.

Получение уведомлений о новых письмах

Другой пример позволит в вашем приложении отслеживать появление новых писем в Outlook (листинг 15.5). В основу примера легла статья из Базы Знаний How to use the NewMail event or the NewMailEx event to monitor Outlook and to notify you in Visual C# .NET that new e-mail messages have arrived , на-

for (int i = 1; i <= AttachCnt; i++)

Console.WriteLine(i.ToString0 + -

+ oMsg.Attachments.Item(i).DisplayName);

TODO: Если используется библиотека Microsoft Outlook 11.0 Object Library, раскомментировать следующие строки /*if (AttachCnt > 0) {

for (int i = 1; i <= AttachCnt; i++) Console.WriteLine(i.ToString0 +

+ oMsg.Attachments[i].DisplayName);



1 ... 135 136 137 [ 138 ] 139 140 141 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика