Постмачтер 2 или CDO Live!
АрхивПрограммазм (архив)Продолжаем разговор о почтовой системе Windows. CDO для Windows 2000 - новый API для работы с SMTP и NNTP сервисами NT. Check this out.
Краткий обзор технологий
Приходилось ли вам программно отправлять почту или получать доступ к сообщениям вашего почтового ящика? Если вы программировали эти задачи на Visual C++, то наверняка вам знаком интерфес MAPI. Но о нем говорить, к счастью, не будем.
Bо времена Exchange 5.0 cуществовал и более легкий способ работы с почтовыми сообщениями - при помощи библиотеки OLEMSG32, которая по сути была COM оберткой для MAPI. С появлением Exchange 5.5 Microsoft сменил название библиотеки, сделав его весомым и кратким - CDO (Collaboration Data Object). Функциональность же принципиально не изменилась.
Библиотеки CDO ранних версий ( CDO v 1.x ) основывались на интерфейсах MAPI, и предоставляли разработчикам способы управления почтовыми сообщениями проще чем MAPI. За счет этого программирование при помощи CDO стало популярно среди разработчиков. Для доступа к компонентам SMTP и NNTP, входящим в состав IIS 4.0 появилась библиотека CDONTS - специализированное подмножество CDO.
Вместе с Windows 2000 вышла библиотека CDO 2.0 или CDO for Windows 2000. Основой для нее явились принципиально новые решения: поддержка Internet-стандартов и стандартизация доступа к данным через OLE DB/ADO интерфейс. Известно, что операционная система Windows 2000 активно использует эту библиотеку для своих задач.
С выходом Exchange 2000 на свет появилась еще несколько библиотек CDO - 3.0 или CDO for Exchange 2000, CDO for Exchange Management и CDO Workflow Objects for Exchange. CDO for Exchange естественно расширяет функциональность CDO for Windows. С помощью CDO 3.0 возможна разработка программных решения на базе Web Store. А наличие механизмов перехвата транспорнтых событий и событий от операций с даннымии ( transport and store event) позволяет расширять функциональность Web Store.
Примечание: Web Store - одна из ключевых инициатив Microsoft для унификации доступа к данным. Web Store комбинирует функциональность файловой системы, Web - доступа и процедур коллективной работы.
Далее не будем вспоминать, что было в веке минувшем и подробнее остановимся на версиях CDO, поставляемых с продуктами Microsoft версии 2000.
Основные черты CDO for Windows 2000 (CDOSYS.DLL)
- Для работы через CDOSYS необходимы ОС Windows 2000 и сервер SMTP ( локальный или удаленный ). Возможна программная настройка на SMTP сервер.
- Поддержка транспортных событий. События протоколов для входящей и исходящей почты и новостей. Поддержка Internet - стандартов.
- Создание и управление данными в форматах MIME/MHTML. Поддержка отправки/приема сообщений через SMTP/NNTP протоколы.
- Стандартизованный доступ к данным. CDOSYS основана на технологии доступа к данным OLE DB/ADO.
- Поддержка языков программирования. CDOSYS - это COM библиотека, поддерживающая дуальный интерфейс, что позволяет использовать ее во многих языках программирования: Visual Basic, VB Scripting Edition, Java Script, Visual Basic for Application, Visual C++.
- Возможность обновления библиотеки. CDOSYS разрабатывалась как подмножество библиотеки CDO for Exchange (CDOEX). Поэтому поддерживается полная программная совместимость приложений, разработанных для CDOSYS после установки Exchange 2000.
Cценарии применения CDOSYS.DLL
- Массовые рассылки. Создание шаблонов сообщений.
- Репликации, основанные на почтовых сообщениях. Например, Windows 2000 использует CDOSYS для репликаций Active Directory.
- Проверка на наличие вирусов в почтовых сообщениях и новостях перед доставкой получателю.
- Выявление spam - сообщений перед доставкой получателю.
- Отправка Web - страниц, включая ссылки и графику по запросам пользователей. Например, организация подписки на страницы с новостями.
- Формирование и отправка сообщений, подтверждающих завершение транзакций.
- Автоматическая пересылка входящей почты.
- Административные сообщения.Например, периодическая отправка сообщений о состоянии серверов/сервисов в почтовый ящик системного администратора.
Основные черты CDO for Exchange Server 2000 (CDOEX.DLL)
- Расшираяет функциональность CDO for Windows. Поддерживается программная совместимость с CDOSYS.
- Управление календарем через CDOEX. Протокол работы c кадендарем основан на стандартах Internet (iCalendar). Поддерживается полная совместимость с календарем Outlook 98 и Outlook 2000.
- Разделение функциональности. ADO используется для навигации по данным а CDO для связывания с Web Store.
- Создание пользовательских объектов CDO. CDOEX позволяет имплементировать базовые объекты CDO при создании пользовательских CDO объектов.
- Дополнительные библиотеки для Exchange Server 2000. Библиотека CDOEXM - CDO for Exchange Mangement Libraries предоставляет объекты и интерфейсы для управления сервером и почтовыми ящиками Exchange Server. Для обеспечения доступа к Active Directory Microsoft рекомендует использовать эту библиотеку соместно с интерфейсами ADSI (Active Directory Service Interfaces). Еще одна новая библиотека CDOWF служит для управления объектами Exchange Workflow Engine.
Версии CDO
Exchange 5.0 | Exchange 5.5 | IIS 4.0 | Windows 2000 Server | Exchange 2000 | |
---|---|---|---|---|---|
Active Messaging |
Да |
Нет |
Нет |
Нет |
Нет |
CDO 1.2 |
Нет |
Да |
Нет |
Нет |
Да |
CDO 1.2 for Windows NT Server |
Нет |
Да |
Да |
Да* |
Да* |
CDO for Windows 2000 Server |
Нет |
Нет |
Нет |
Да |
Нет |
CDO for Exchange 2000 |
Нет |
Нет |
Нет |
Нет |
Да |
* - поддерживается для совместимости с существующими приложениями.
Примеры создания объектов библиотеки CDO в разных языках программирования
VbScript
Dim iMsg Set iMsg = CreateObject("CDO.Message") Dim iDsrc Set iDsrc = iMsg.DataSource Dim iBp Set iBp = iMsg.BodyPart
Visual Basic
Предварительно необходимо установить ссылки на Microsoft CDO for Microsoft Windows 2000 Library Microsoft ActiveX Data Objects 2.5 Library
Dim iMsg As New CDO.Message ...
Visual C++
Если вы хотите работать с объектами CDOSYS на языке С++, используя только COM, то основа программы будет выглядеть следующим образом:
#import "c:\program files\common files\system\ado\msado15.dll"
no_namespace raw_interfaces_only #import "cdosys.dll" no_namespace raw_interfaces_only /* Флаг raw_interfaces_only запрещает создание классов - оберток для использования "смарт-поинтеров". По флагу no_namespace не просиходит генерации компилятором пространста имен. */ #include "с:\sdk\include\cdosysstr.h" #include "с:\sdk\include\cdosyserr.h" #include <assert.h> void main() { CoInitialize(NULL); IMessage* pMsg = NULL; HRESULT hr = CoCreateInstance(__uuidof(Message), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMessage), reinterpret_cast<void**>(&pMsg)); assert(SUCCEEDED(hr)); Fields* pFlds = NULL; pMsg->get_Fields(&pFlds); ... CoUninitialize(); }
Важное замечание
Обязательно нужно использовать ADO 2.5 в глобальном пространстве имен или в пространстве имен CDO. Иначе по умолчанию параметры в функциях CDO из пространства имен ADO не будут корректно разрешены при компиляции.
Пример использования классов - оберток
#import "c:\program files\common files\system\ado\msado15.dll"
no_namespace #import
"c:\program files\common files\Microsoft Shared\CDO\cdoex.dll" \ no_namespace #include "cdoexstr.h" #include "cdoexerr.h" void main() { CoInitialize(NULL); { try { IMessagePtr iMsg(__uuidof(Message)); FieldsPtr Flds; Flds = iMsg->Fields; : } catch( _com_error err) { // ... } } CoUninitialize(); return 1; }
Объектная модель CDO 2.0
- IBodyPart - содержит абстрактные методы и свойства для управления секции тела сообщения.
- IMessage - содержит абстрактные методы и свойства для управления сообщением в целом.
- IDataSource - содержит абстрактные методы и свойства для связывания и упорядочивания, выделения и вставки данных сообщений в другие объекты или из них.
- IDropDirectory - содержит методы доступа к сообщениям, хранящимся в файловой системе (например в Windows 2000 SMTP drop directory).
- IMessages - содержит интерфейс коллекции сообщений.
- IBodyParts - содержит интерфейс коллекции секций сообщения.