694A5p3高程 Chinaopub.com 表23-18 AddressEntry Filter对象的属性及说明 Address 返回被过滤 Address Entry.对象的消息地址 lele 返回一个包括了过滤使用的条件的 Fields集合 设置和返回用于模糊名称过滤的名称 设置和返回是否所有的条件在添加到过滤器之前都求“反 设置和返回是否条件由“或”代替“与”进行组合 眼看上去,可能不明白Not和Or是怎样使用的,这将在后面介绍,先来介绍这 个对象的功能 Address Entry Filter对象的关键是它的 Fides集合。所指定的过滤器使用的所有条件都 在这个集合中。在 Fields集合里可以有零或更多的条目,每一个条目都代表了一个条件。 例如,添加一个条件,使得只有家庭地址在“CA”的 Address Entry被过滤出来,程序代码 如下: Dim objAddEntries Dim objAdaEntriesFilter t objAddEntriesFilter objAddEntries Filter objAddEntriesFilter. Fields(CdoPR_HOME_ADDRESS_STATE_OR_PROVINCE)."CA 缺省状态下,当添加附加条件到过滤器中时,它们包含在一个And子句中。因此,为了完 成集合的过滤,集合中的每一个 AddressEntry对象都必须与所有的条件比较。如果想在过滤器 中使用Or子句,就需要在此对象中设置Or属性。例如,过滤家庭地址在“CA”或者远程用户 的 Address Entry对象,代码应如下 Dim objAddEntrie Dim objAddEntriesFilter et objAddEntriesFilter objAddEntries Filter bjAddEntriesFilter. Fields(CdoPR_HOME_ADDRESS_STATE_OR_PROVINCE)=.CA objAddEntriesFilter. Fields(CdoPR_DISPLAY_ TYPE)= CDO_Remote_Use 另一个影响如何处理条件的属性是Noto如果想要找到所有不在“CA”的 AddressEntry对 象,代码应如下 Dim objAddEntri Dim objAddEntriesFilter Set objAddEntriesFilter objAddEntries Filter objAddEntriesFilter. Fields(CdoPR_ HOME_ ADDRESS_STATEOR_PROVINCE)=.CA 正如所看到的, Address Entry Filter.对象赋予程序员对于 Addressentries集合很大的控制权。 可以很容易地添加或删除过滤条件,如果应用程序需要的话,它可以缩小 Address entries集 在使用此对象时,必须记住释放此对象(设置为 Nothing)并不能从 Addressentries集合中删除 过滤器。要想从集合中删除过滤器,就必须设置 Addressentries集合的 Filter属性为 Nothing 现在已经学习了可以有不同父对象类型的集合和对象。从对这些对象的讨论中可以清楚 地知道它们是消息的构件,如果不能与消息的附件、字段、收件人、地址交互就不可能发送
表23-18 AddressEntryFilter对象的属性及说明 属 性 说 明 A d d r e s s 返回被过滤A d d r e s s E n t r y对象的消息地址 F i e l d s 返回一个包括了过滤使用的条件的 F i e l d s集合 N a m e 设置和返回用于模糊名称过滤的名称 N o t 设置和返回是否所有的条件在添加到过滤器之前都求“反” O r 设置和返回是否条件由“或”代替“与”进行组合 一眼看上去,可能不明白 N o t和O r是怎样使用的,这将在后面介绍,先来介绍这 个对象的功能。 A d d r e s s E n t r y F i l t e r对象的关键是它的 F i d d s集合。所指定的过滤器使用的所有条件都 在这个集合中。在 F i e l d s集合里可以有零或更多的条目,每一个条目都代表了一个条件。 例如,添加一个条件,使得只有家庭地址在“ C A”的A d d r e s s E n t r y被过滤出来,程序代码 如下: 缺省状态下,当添加附加条件到过滤器中时,它们包含在一个 A n d子句中。因此,为了完 成集合的过滤,集合中的每一个 A d d r e s s E n t r y对象都必须与所有的条件比较。如果想在过滤器 中使用O r子句,就需要在此对象中设置 O r属性。例如,过滤家庭地址在“ C A”或者远程用户 的A d d r e s s E n t r y对象,代码应如下: 另一个影响如何处理条件的属性是 N o t。如果想要找到所有不在“ C A”的A d d r e s s E n t r y对 象,代码应如下: 正如所看到的,A d d r e s s E n t r y F i l t e r对象赋予程序员对于A d d r e s s E n t r i e s集合很大的控制权。 可以很容易地添加或删除过滤条件,如果应用程序需要的话,它可以缩小 A d d r e s s E n t r i e s集 合。 在使用此对象时,必须记住释放此对象(设置为N o t h i n g )并不能从A d d r e s s E n t r i e s集合中删除 过滤器。要想从集合中删除过滤器,就必须设置AddressEntries集合的Filter属性为Nothing。 现在已经学习了可以有不同父对象类型的集合和对象。从对这些对象的讨论中可以清楚 地知道它们是消息的构件,如果不能与消息的附件、字段、收件人、地址交互就不可能发送 694计计ASP 3 高级编程 下载
第3章AsP, CDO Exchange S695 信息。在下一节中,将介绍几个较高级的CDO库对象,这些对象使用以上的构件并对它们进 23.1.2 Session对象 与 CDONTS库一样,CDO库也以 Session对象作为根对象。正像 CDONTS Session对象提供 了比 NewMail对象更多的功能一样,CDO的 Session对象提供了比 CDONTS的 Session对象更强 大的功能 CDO Session对象提供的属性很好地说明了这一点,如表23-19所示 表23-19 Session对象的属性及说明 AddressLists 返回当前会话的 Addresslists集合 返回当前用户的 Address Entry对象 返回代表当前用户的收件箱的 Folder对象 InfoStores 返回当前会话/用户的信息存储的一个集合 返回当前会话的用户/显示名称 OperatingSystem 返回关于当前操作系统的信息(类型及版本) 返回代表当前用户的发件箱的 Folder对象 返回表示用户是否离位的布尔值(Ture/ False OutofofficeText 返回用于离位响应消息的文本字符串 CDO Session对象的方法也比 CDONTS Session对象的方法多得多。 用到的第一个 Session对象的方法为 Logon,它与 CDONTS中的 LogonSMTP相似。在这种 情况下, Logon能使用户登录进入一个MAPl会话,并不只限于SMTP服务器。必须成功地调 用一次 Logon方法,才能对一个CDO对象进行访问。否则,当试图访问对象时,会出现一个 CdOE NoT INitialized错误。 Logon方法的语法为: obsession. Logon( [profileName][, profilePassword] [ showDialog] I, newSession] [ parentwindow] ( NoMail] [ ProfileInfo]) 其参数及说明如表23-20所示。 表23-20 Logon方法的参数及说明 供会话使用的配置文件的名称 Profile Password 用于指定的配置文件的口令 在ASP代码中忽略 指定是创建一个新的会话,还是使用共享的MAP会话 在ASP代码中忽略 指定是否向MAP假脱机系统注册会话 Profilelnfo 指定用来建立一个会话配置文件的服务器和信箱的名称 对于 NewSession参数,如果当前没有共享的MAPI会话,那么就忽略 NewSession,并建立 个新的会话。如果当前有一个共享的会话,此参数就用来确定是使用当前会话还是创建 个新会话。如果 NewSession为Ture,且MAP会话存在,那么就使用此会话。如果 NewSession 为 False,且MAPI会话存在,那么就建立一个新的会话
第2 3章 A S P、C D O与Exchange Serv e r计计695 下载 信息。在下一节中,将介绍几个较高级的 C D O库对象,这些对象使用以上的构件并对它们进 行扩充。 23.1.2 Session对象 与C D O N T S库一样,C D O库也以S e s s i o n对象作为根对象。正像CDONTS Session对象提供 了比N e w M a i l对象更多的功能一样,C D O的S e s s i o n对象提供了比CDONTS 的S e s s i o n对象更强 大的功能。 CDO Session对象提供的属性很好地说明了这一点,如表 2 3 - 1 9所示。 表23-19 Session对象的属性及说明 属 性 说 明 A d d r e s s L i s t s 返回当前会话的A d d r e s s L i s t s集合 C u r r e n t U s e r 返回当前用户的A d d r e s s E n t r y对象 I n b o x 返回代表当前用户的收件箱的 F o l d e r对象 I n f o S t o r e s 返回当前会话/用户的信息存储的一个集合 N a m e 返回当前会话的用户/显示名称 O p e r a t i n g S y s t e m 返回关于当前操作系统的信息 (类型及版本) O u t B o x 返回代表当前用户的发件箱的 F o l d e r对象 O u t O f O ff i c e 返回表示用户是否离位的布尔值 ( Tu r e / F a l s e ) O u t O f O ff i c e Te x t 返回用于离位响应消息的文本字符串 CDO Session对象的方法也比CDONTS Session对象的方法多得多。 用到的第一个S e s s i o n对象的方法为L o g o n,它与C D O N T S中的L o g o n S M T P相似。在这种 情况下,L o g o n能使用户登录进入一个 M A P I会话,并不只限于 S M T P服务器。必须成功地调 用一次L o g o n方法,才能对一个 C D O对象进行访问。否则,当试图访问对象时,会出现一个 C d o E _ N O T _ I N I T I A L I Z E D错误。 L o g o n方法的语法为: 其参数及说明如表2 3 - 2 0所示。 表23-20 Logon方法的参数及说明 参 数 说 明 P r o f i l e N a m e 供会话使用的配置文件的名称 P r o f i l e P a s s w o r d 用于指定的配置文件的口令 S h o w D i a l o g 在A S P代码中忽略 N e w S e s s i o n 指定是创建一个新的会话,还是使用共享的 M A P I会话 P a r e n t Wi n d o w 在A S P代码中忽略 N o M a i l 指定是否向M A P I假脱机系统注册会话 P r o f i l e I n f o 指定用来建立一个会话配置文件的服务器和信箱的名称 对于N e w S e s s i o n参数,如果当前没有共享的 M A P I会话,那么就忽略N e w S e s s i o n,并建立 一个新的会话。如果当前有一个共享的会话,此参数就用来确定是使用当前会话还是创建一 个新会话。如果N e w S e s s i o n为Tu r e,且M A P I会话存在,那么就使用此会话。如果 N e w S e s s i o n 为F a l s e,且M A P I会话存在,那么就建立一个新的会话
696A53商级编程 Chinapub coM 下载 NoMal参数的值指定一条消息能否通过假脱机系统发送。如果 NoMal的值为Ture,消息 就只能从一个紧密耦合的消息存储和邮件通路中传递。当 NoMal的值为 False(默认)时,消息 可以通过邮件假脱机系统发送和接收 为创建一个连接“ Mailserver l”服务器和“ Jeanie”邮箱的新会话,可以使用以下代码 Dim objses Dim strAi lbox Dim strserver Dim strProfilestring strMailbox =.Jeanie strServer -"Mailserver trProfilestring strserver vbLf strMailbox Set obsession= Createobject("CDO Session) obj Session. Logon ProfileInfo: =strProfilestring 如果登录失败,就会产生CdoE_ LOGON FAILED错误。一旦成功地调用了 Logon方法, 就可以访问在 Session对象级别之下的对象。 Logon方法用来终止当前的MAP会话。当用户退出时,必须调用此方法来释放分配给 Session对象的资源。通过使用同一个 Session对象来创建另一个会话是可能的。例如,想要退 出 Jeanie的会话并让Jack登录,程序代码如下 Dim strserver Dim strProfilestring strpro m:) strserver vlf o strMailbox o]Session. Logoff strProfilestring strServer vlf &'Jack iSession Logon ProfileInfo: -strProfilestring 然而,如果试图在调用 Logoff方法之后,在成功调用 Logon方法之前就访问 Session对象 就会得到这 CdOE NOT INITIalIzed错误。 另一个有趣的方法叫作 Setoption。它用来指定影响 CDO Rendering库对象如何显示日历 信息的选项。使用 Setoption方法可以影响日历显示的某些选项 日历显示的选项、类型及可能值如表23-21所示。 表23-21日历显示的选项、类型及可能值 类型 5:00PM FristDayOfweek l(星期一)到7(星期日) $24 HourClock TimeZone CDOTmz*常量之
N o M a i l参数的值指定一条消息能否通过假脱机系统发送。如果 N o M a i l的值为Tu r e,消息 就只能从一个紧密耦合的消息存储和邮件通路中传递。当 N o M a i l的值为F a l s e (默认)时,消息 可以通过邮件假脱机系统发送和接收。 为创建一个连接“M a i l S e v e r 1”服务器和“J e a n i e”邮箱的新会话,可以使用以下代码: 如果登录失败,就会产生 C d o E _ L O G O N _ FA I L E D错误。一旦成功地调用了 L o g o n方法, 就可以访问在S e s s i o n对象级别之下的对象。 L o g o ff方法用来终止当前的 M A P I会话。当用户退出时,必须调用此方法来释放分配给 S e s s i o n对象的资源。通过使用同一个 S e s s i o n对象来创建另一个会话是可能的。例如,想要退 出J e a n i e的会话并让J a c k登录,程序代码如下: 然而,如果试图在调用 L o g o ff方法之后,在成功调用 L o g o n方法之前就访问 S e s s i o n对象, 就会得到这C d o E _ N O T _ I N I T I A L I Z E D错误。 另一个有趣的方法叫作 S e t O p t i o n。它用来指定影响 CDO Rendering库对象如何显示日历 信息的选项。使用S e t O p t i o n方法可以影响日历显示的某些选项。 日历显示的选项、类型及可能值如表 2 3 - 2 1所示。 表23-21 日历显示的选项、类型及可能值 选 项 类 型 可 能 值 B u s i n e s s D a y E n d Ti m e Ti m e 5:00 PM B u s i n e s s D a y S t a r t Ti m e Ti m e 9:00 AM C a l e n d a r S t o r e S t r i n g " O u t l o o k " F r i s t D a y O f We e k L o n g 1 (星期一)到7 (星期日) I s 2 4 H o u r C l o c k B o o l e a n F a l s e Ti m e Z o n e L o n g C D O T m z *常量之一 Wo r k i n g D a y s L o n g C D O M o n d a y ~ C d o F r i d a y 696计计ASP 3 高级编程 下载
Chinapub.comM23%AS9.cdOfrchangsrne697 载 会话的选项既不会自动地转换到 Rendering库对象,这些选项也不保持同步,这 点很重要。使用时需要小心地设置 Session对象和 Rendering库对象之间的所有选项 的值并保持同步 在使用 CDONTS库时,通过调用Send方法来发送信息。对于CDO库,新的消息放置在 Outbox里。在 Outbox里的消息可能不立即发送,但是在急需发送所有等待传出的消息时,可 以使用 Session对象的 Delivernow方法。运行此方法请求假脱机系统立即发送所有当前会话提 交的消息。此方法的一个副作用是所有等待的消息都要经假脱机系统处理。 还有一个 Addressbook方法,用来显示一个模态对话框,让用户从地址簿选择一 个地址。我们正在ASP中编程,不允许有用户界面口,不能使用此方法 23.1.3文件夹 CDO Session对象的 GetDefaultFolder方法的功能比 CDONTS库中的更强。CDO的 GetDefault Folder方法允许访问更多的文件夹,而不像 CDONTS库中的 GetDefault Folder方法那 样只能访问收件箱(nbox)或发件箱( Outbox)。其语法为: Set objFolder obsEssion GetDefaultFolder (objectType) 唯一的参数是 ObjectType,其可能的值如表23-22所示。 表2322 bjectType参数的值及对应的文件夹 ObjectType 文件夹 Cdo Default FolderCalendar(o) CdoDefault FolderOutbox(2) Outbox ent Items CdoDefault Folder Deletedltems(4) CdoDefault FolderContacts(5) CdoDefaultFolderJournal(6) Journal Cdo Default Folder Tasks( 8) 注意, Contacts、 Notes、 Journal和 Tasks文件夹只对 Microsoft outlook有效 如果只使用 Micrsoft schedule+,那么引用以上文件夹就会出现 CdOE NOT found错误。 另外,不是所有的消息存储都支持以上所有文件夹类型。例如,如果当前会话的配置文件只 有一个个人消息存储,那么它可能没有 Notes文件夹,这时如果指定 objectType为 CdoDefault Folder notes,就会得到 CdOE NO suPport错误 CDO中(不是 CDONTS中)的一个明显特性是 Session对象有一个 Get Folder方法。此方法允 许访问消息存储中的任何一个文件夹,只要文件夹的ID属性已知。其语法为: Set objFolder obsEssion GetFolder ( folderId [ storeID] 其参数及说明如表23-23所示
会话的选项既不会自动地转换到 R e n d e r i n g库对象,这些选项也不保持同步,这 一点很重要。使用时需要小心地设置 S e s s i o n对象和R e n d e r i n g库对象之间的所有选项 的值并保持同步。 在使用C D O N T S库时,通过调用 S e n d方法来发送信息。对于 C D O库,新的消息放置在 O u t b o x里。在O u t b o x里的消息可能不立即发送,但是在急需发送所有等待传出的消息时,可 以使用S e s s i o n对象的D e l i v e r N o w方法。运行此方法请求假脱机系统立即发送所有当前会话提 交的消息。此方法的一个副作用是所有等待的消息都要经假脱机系统处理。 还有一个A d d r e s s B o o k方法,用来显示一个模态对话框,让用户从地址簿选择一 个地址。我们正在A S P中编程,不允许有用户界面口,不能使用此方法。 23.1.3 文件夹 CDO Session 对象的 G e t D e f a u l t F o l d e r方法的功能比 C D O N T S库中的更强。 C D O的 G e t D e f a u l t F o l d e r方法允许访问更多的文件夹,而不像 C D O N T S库中的G e t D e f a u l t F o l d e r方法那 样只能访问收件箱( I n b o x )或发件箱( O u t b o x )。其语法为: 唯一的参数是O b j e c t Ty p e,其可能的值如表2 3 - 2 2所示。 表23-22 ObjectTy p e参数的值及对应的文件夹 O b j e c t Ty p e 文件夹 C d o D e f a u l t F o l d e r C a l e n d a r ( 0 ) C a l e n d a r C d o D e f a u l t F o l d e r I n b o x ( 1 ) I n b o x C d o D e f a u l t F o l d e r O u t b o x ( 2 ) O u t b o x C d o D e f a u l t F o l d e r S e n t I t e m s ( 3 ) Sent Items C d o D e f a u l t F o l d e r D e l e t e d I t e m s ( 4 ) D e l e t e d I t e m s C d o D e f a u l t F o l d e r C o n t a c t s ( 5 ) C o n t a c t s C d o D e f a u l t F o l d e r J o u r n a l ( 6 ) J o u r n a l C d o D e f a u l t F o l d e r N o t e s ( 7 ) N o t e s C d o D e f a u l t F o l d e r Ta s k s ( 8 ) Ta s k s 注意,C o n t a c t s、N o t e s、J o u r n a l和Ta s k s文件夹只对Microsoft Outlook有效。 如果只使用Micrsoft Schedule+,那么引用以上文件夹就会出现 C d o E _ N O T _ F O U N D错误。 另外,不是所有的消息存储都支持以上所有文件夹类型。例如,如果当前会话的配置文件只 有一个个人消息存储,那么它可能没有 N o t e s文件夹,这时如果指定 O b j e c t Ty p e 为 C d o D e f a u l t F o l d e r N o t e s,就会得到C d o E _ N O _ S U P P O RT错误。 C D O中(不是C D O N T S中)的一个明显特性是 S e s s i o n对象有一个G e t F o l d e r方法。此方法允 许访问消息存储中的任何一个文件夹,只要文件夹的 I D属性已知。其语法为: 其参数及说明如表2 3 - 2 3所示。 第2 3章 A S P、C D O与Exchange Serv e r计计697 下载