首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Exchange Server > Exchange Server 的CDO对象集合 > 正文

Exchange Server 的CDO对象集合

出处:本站收集 作者:请作者联系 时间:2005-9-2 1:52:00

一:关于CDO对象集合的说明

CDO对象集合是建立协作是应用程序的可靠的API,ADO可以用来存取WEB存储系统,但是他缺少协同作业最基本的功能,而CDO却可以处理一般的应用程序和高级的工作流应用程序解决方案,CDO甚至可以提供我们管理exchange的能力,以及与windows 2000AD通讯。

CDO:collaboration data objects,是一项可以用来建立用途广泛的协同作业应用程序的技术,能完成如:接受传送电子邮件、日程安排、联络人管理、工作流程以及exchange管理的应用程序。

CDO并不是被封装成为一个单独的对象模块,相反的,它包含了3个不同的对象模块,每一个都有其特定的用途。可以同时或者单独使用这些物件模块。

三个对象模块的DLL文件信息:

CDO FOR EXCHANGE 2000 SERVER               CDO.DLL

CDO FOR EXCHANGE MANAGEMENT             CDOEXM.DLL

CDO WORKFLOW FOR EXCHANGE                CDOWF.DLL

 

二:三个对象模块的基本功能

1.  CDO for exchange 2000 server

最常用的CDO对象模块,该物件模块包括了一些协同作业应用程序中最常见的核心组件与接口。也可以使用该对象模块来建立与设定web存储系统中的文件夹,其中最上层的cdo对象常用来建立以下几种解决方案:

文件夹:(folder在信箱存放区或公用存放区的容器。

人员:(personWEB存储系统文件夹中的联络人类型的资料,或者是AD中的使用者或联络人对象。

邮件:(message电子邮件

约会:(appointment已经安排的约会或会议

日历信息(日程安排):(calendar message会议邀请

收件者:(addressee任何形式的电子邮件收件者或会议邀请的收件者

出席者:(attendee)包含于约会或者会议中的人员

所有最上层的对象都有两个重要的共同接口(interface

Iconfiguration用来定义可以应用于多个对象的行为模块,

Idatasource:每个CDO对象都公开Idatasource接口,用来管理、存放与存储资料。

2.  CDO for exchange management objects

该对象模块是用来建立以及管理exchange信箱与exchange服务器组件的类别和接口所组成。当编写用来管理exchange收件者和信箱的程序代码时,会常用到。使用的对象是:

IMailRecipient针对使用者指定电子邮件如何传送与管理,此对象也可以使联络人与文件夹不需要信箱便可以接收电子邮件。

IMailboxStore指定如何建立、移动、删除exchange信箱,以及如何管理可使用信箱的收件者其可用来管理的属性。如果开发WEB架构的服务器管理工具,该对象模块提供让我们可以整体的管理服务器的对象,这些状况可用的最上层的对象有:

ExchangeServer:管理exchange2000服务器与传回基本信息,如服务器类型与版本。

FolderTree管理服务其中的文件夹树状结构,包含任何副本。

StorageGroup管理储存群组,用来组织信箱存放区和公用存放区。

MailboxStoreDB管理单一使用者的信箱存放区可以使用此对象来连接、移动或中断连接信箱存放区,并传回有关存放区数据库的基本信息。

PublicStoreDB建立、管理与删除公用存放区,并传回有关存放区数据库的基本信息。

3.  CDO Workflow for Exchange

该对象模块是由用来建立以及执行工作流程与路由应用程序的类别和接口所组成。建立工作流应用程序有两种方式:

方式一:使用Workflow designer for Microsoft Exchange 2000 Server

方式二:使用自行建立工作流程事件流程与事件接受的方式。

我们使用前者,使用WorkFlow Designer我们就不需要大部分的工作流程对象,只有当编写回应各式各样工作流程动作的Script时,才需要使用这些对象,在我们的Script中最可能用到的对象如下:

IWorkflowSession:提供工作流程引擎、动作的Script与所处理的工作流程项目(ProcessInstance)之间的执行期(run-time)通讯。

IworkflowMessage:建立工作流程处理中要传送给收件者的通知邮件。

AuditTrailEventLog于应用程序记录档(log)中,建立有关工作流程事件动态的项目(entries)。

   如果使用Workflow Designer无法提供完成要设计的功能,那就要自行建立事件接受,如果自行建立事件接受还需要熟悉下列对象:

ProcessDefinition定义工作流程中的逻辑,包含状态与动作。

ProcessInstance控制、记录与监视移动于工作流程处理之间、个别独立的工作流程项目的状态。

三:开始使用CDO

1.  由类别建立对象

CDO由多种COM的类别所组成,是用来建立新对象的基础,当一个对象被建立的时候,这些类别会决定对象标准的预设功能。如:CDOmessage类别是用来定义新的Message对象,每个Message对象都有相同的标准功能,允许对象被传送与接受。

使用VB创建一个Message对象的例子:

dim msg as cdo.message

set msg=new cdo.message

使用Vbcript创建一个message对象:

dim msg

set msg=server.createobject(“cdo.message”)

这样我们就可以存取此类别预设接口中的属性与方法,以及任何该类别公开的其它接口。

使用完对象变量之后应该释放对象变量占有的内存:set msg=nothing

2.  使用介面(接口)

界面定义了一个由属性和方法封装在一起的集合。

类别通常有多个与其相关联的介面,包含一个预设(default)的介面,此预设介面拥有类别既定的预设功能。预设介面与该对象呈现的名称相似,只是在对象名称前多了一个字母I,表示这是一个相对于类别对象的介面,如person类别有一个管理所有属性与方法的IPerson介面,特别用来定义与管理联络人类型的信息。这个预设的介面是由其所属对象直接公开,也就是我们可以由对象直接呼叫属性和方法。我们可以直接调用Person对象的e-mail属性,程序代码如下:

dim prs as cdo.person

set prs=new cdo.person

prs.email=someone@domain.com

除了默认介面以外,大部分的类别至少使用一个以上的其他介面,这些预设介面也会被其他类别所使用。参照介面以后才能够存取其属性和方法,可以轻易的经由调用相关属性来实现。如;Idatasource介面经由Datasource被存取,代码如下;(VB)

dim dsrc as Idatasource

set dsrc = prs.datasource

有些介面没有用以参照的相关属性,这时因该分情况采取不同措施,如果使用VB,则先宣告一个对象变量作为适当的介面,然后通过将介面对象变量指向对象公开的介面,自动完成参照介面的动作,如CDOEXMIMailRecipient介面

VB:dim fld as cdo.folder

Dim rcp as cdoexm.imailrecipient

Set rcp=fld

Vbscript,不能为变量预先设定数据类型,必须使用getinterface方法存取介面,几乎每个CDO对象都公开用以存取介面的GetInterface方法,范例如下:

Set rcp = fld.getinterface(“imailrecipient”)

四:存取结构描述属性

ADO需要使用fields对象集合才能存取结构描述属性,而CDO提供一种更简单的方式,许多比较一般的结构描述属性都可经由CDO属性来存取。如:我们可以存取Person对象中的urn:schema:contacts:HomePhone结构描述属性,代码如下:

prs.HomePhone=”555-555-0101”

对结构描述属性而言并没有相等的CDO属性,必须使用adofields对象集合,它具有相同的属性与方法。要存取对象集合中的特定属性,就要传送完整并且合格的结构描述属性名称,若有相同的CDO相关常数(constant)也要一起传递,这些常数以cdo开头且包含于CDO函数库中,可以使用这些常数以省去传送完整属性名称的麻烦,使用CDO常数来传送时,其名称并不需要加上引号,如下例存取urn:schemas:contacts:FTPSite的属性:

prs.fields(cdoFtpSite)=”somearchive.edu”

如果要存取的结构描述属性没有可用的CDO属性或常数,就必须传递完整且合格的结构描述属性名称给Fields对象集合。下面的例子和上面的程序代码效果相同:

prs.fields(urn:schemas:contacts:ftpsite)=”somearchive.edu”

为了使程序更容易读懂,当程序中使用的属性不存在CDO属性或没有建立结构描述常数,我们应该为应用程序定义自己的常数。

五:使用URL

ADO一样,CDO也是依赖于URL以及ExOLEDB provider来存取Web存储系统中的资源,所要被存取的资源必须以完整的文件夹路径与显示名称(displayname)建构正确的URL地址,如果文件夹路径或项目的显示名称中有空格字符,那在URL中也必须保留名称中的任何空格字符。

CDO也支持相对的URL用法.

六:了解并使用Idatasource介面

IDataSource介面是使用CDO存取WEB存储系统中资源的关键,所有的CDO对象经由DataSource属性公开IDataSource介面,DataSource属性可以用来在WEB存储系统中开启资源、侦测与储存资源的变更,以及建立新资源。

IDataSource介面的属性与方法,下面是IDataSource介面公开的属性和方法

 

七:IDataSource介面的运作

使用CDO开启一个资源时,并非动态的连线到WEB存储系统,而是将资料由WEB存储系统中复制一个副本到本机的CDO对象,所以实质上您会有两份资料,一份再WEB存储系统中,另一份再CDO对象中,使用CDO对象的属性方法对资料所作的任何改变都是本机上的资料副本,而不是WEB存储系统中的资料,直到使用IDataSource的储存方法明确地指定要对资料作变更WEB存储系统中的资料才会被变更。如不调用一个储存方法,则变更的资料副本就会丢失。

  建立一个新的资源也是同样的道理。

八:使用CDO开启一项资源

使用CDO对象中的DataSource.Open方法,它是以record.open方法为基础的开启资源的方法。CDO使用的open方法语法如下:

open ( source url as string [,activeconnection as object]  [mode as connectmodeenum指定record如何被开启])默认以只读方式打开。

判断资料来源是否在本机被修改过:IDataSource介面的datasource.isdirty属性(boolean)

可以使用该属性判断本机的CDO对象是否被变更,如果变更,则使用datasource.save方法保存变更。

九:使用CDO建立新资源

先为新资源建立一个URL,再将新资源的相关信息存储到该URL,datasource.saveto方法可以让您指定所建立资源的URL,URL必须是资源的精确的实际位置,还必须包含资源的DAV:displayname.

Datasource.saveto方法的语法:

Saveto(sourceurl as string [,activeconnevtion as object]  [,mode as connectmodeenum]  [,createoptions as recordcreateoptionsenum])

Mode,指定record如何被开启

Createoptions,指定资源如何被建立,adcreateoverwrite将会覆盖已经在URL上存在的相同名称的资源项目,如果不设这个常数,则如果URL已经存在此资源的话,将会返回一个错误。

Datasource.savetocontainer方法语法,该方法语法和saveto方法相同

 

两者的区别:saveto方法是具体知名资源项目的URLDAV:displayname,然后将资源项目存放到指定的URL,名称为指定的DAV:displayname,savetocontainer方法则是将资源存放到指定的URL,资源的DAV:displaynameexchange自动产生的一个名称。

该方法的用途:savetrocontainer方法在日程安排、建立约会时用得比较多,因为日程安排项目很多,时常有同名的约会名称,我们可能会将前面已经建立的越会覆盖掉,为了防止这样的事情发生,我们应该采用savetocontainer方法。

十:使用其他对象开启CDO对象

可以使用datasource.openobject方法由其他记忆体中的对象打开CDO对象,而记忆体中的对象可以是其他CDO对象或是其他函数库的对象,比如ADO2.5

openobject方法的语法如下:

openobject(soure as Unknown,  InterfaceName as String)

Source:被要打开的对象所参照的已打开对象,例如一个ado record或一个已开启的电子邮件,通常是一个对象变量

InterfaceName:source所公开的介面名称字串,例如,假使source是电子邮件的bodypart对象,则InterfaceName就是BodyPart,这个参数区分大小写。

为什么会使用该方法:

当我们已经使用recordset对象来浏览WEB存储系统的时候,可能使用Connection对象执行SQL查询来筛选所需要的项目,有或是批次的建立新项目,但是可能需要使用CDO来设定对象指定的属性,如果要修改使用openobject方法开启的CDO对象,需要使用DataSource.savetoobject方法将变更储存回parent对象,储存时传递openobject方法相同的参数给savetoobject方法。

检查文件夹或项目是否存在:

使用ADO recordopen方法,打开欲检查的URL,若成功打开,说明此URL已经有相同的资源,若不能打开,则说明资源或项目不存在

十一:使用CDO建立文件夹

使用CDO建立新的文件夹的时候,要建立新的CDO Folder物件,然后设定您希望其运作方式的相关属性,假如知道你要设定文件夹保存特定形态的项目,便要设定ContentClass属性为其中一个事先定义的内容类别,若要文件夹也可以被MAPI的用户端所使用,则要设定http://schemas.microsoft.com/exchange/outlookfolderclass属性,假如有调用fields集合对象来设定属性,要先调用update方法,再使用saveto方法保存。

如果要删除一个文件夹或项目需要调用recorddeletereocrd方法。  

十二:使用文件夹接收电子邮件

当一个文件夹被建立时,预设并不能通过SMTP接受邮件,必须要明确地开启文件夹来接受电子邮件,CDOIMailRecipient介面的MailEnable方法可以达到这个目的,exchange会自动指定一个电子邮件地址给文件夹.

如果在建立文件夹的同时就要开启文件夹接收电子邮件的功能的话,要先储存刚刚创建的文件夹,然后再调用MailEnable方法,如果使用已存在的文件夹,则不需要再将其存储一遍。

例程:

set fl=createobject(“cdo.folder”)

url=file://./backofficestorage/oaserver.exchange/

set rcp=fl.getinterface(“IMailRecipient”)

fl.datasource.save

set fl=nothing set rcp=nothing

计算文件夹中的内容:

使用ADO计算文件夹中的资源的时候,必须要浏览整个文件夹,这种方式忽视资源的内容是项目还是文件夹,而且当资源数量庞大时,会给服务器带来相当大的负荷

使用CDO可以避免程序中有不明确的状况发生,以及造成服务器负载过重,Folder对象提供三种计算文件夹内容的属性:

ItemCount:该属性计算文件夹中所有不包含子文件夹的项目的数量。

Unread ItemCount:该属性只计算未被标记为已读取的项目数量。

VisableCount:该属性只计算那些使用者可见并可存取的项目,忽略可能存储于文件夹中的系统隐藏项目。

相关文章 热门文章
  • Outlook 2003与Exchange 2010结合使用中可能出现的问题及建议的解决方法
  • 在配置完 Exchange Server 2010 CAS Array后需要做的两件事
  • 如何通过Exchange2010 OWA更改过期密码
  • Windows server 2008 R2上安装exchange 2010注意的问题
  • 关于Exchange数据库文件过大的正确处理方法
  • Exchange 2007 HUB服务器默认证书过期解决办法
  • Exchange 2010 SP1个人邮件归档配置
  • 邮件系统双雄PK: TurboMail vs Exchange
  • 利用Windows Server Backup备份Exchange 2010 DAG
  • Exchange Server 2010与RMS集成
  • Exchange Server 2010 跨组织移动邮箱
  • 配置Exchange 2010+Outlook 2010自动发现功能
  • Exchange 2000 Server 常见问题(四)
  • Exchange 2000 Server 常见问题(一)
  • Exchange 2000 Server 常见问题(三)
  • Exchange 2000 Server 常见问题(五)
  • Exchange 2000 Server 常见问题(二)
  • 部署Exchange Server 2003问题集(1)
  • Telnet到端口25以测试SMTP通信
  • 限制Exchange用户从Internet收发邮件
  • Exchange Server管理与设定(一)
  • 使用Exchange 2000 Server 构建多域名邮件系统
  • 虚拟内存碎片的检测和EXCHANGE的内存优化
  • Exchange Server 公用程序(一)
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号