Статьи о почте

Новости

Все новости

Разное в мире IT

Все заметки

http://spbdesigner.ru/ разработка мобильных версий и адаптивных сайтов.
mailinfo.ru - Статьи о почте

Постмачтер 2 или CDO Live!

Прислал(а) Маланова Ирина [9 января 2002]

раздел: [Почта в различных ОС]

Краткий обзор технологий

Приходилось ли вам программно отправлять почту или получать доступ к сообщениям вашего почтового ящика? Если вы программировали эти задачи на 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 - содержит интерфейс коллекции секций сообщения.