Configuration CoClass
Topic Last Modified: 2006-06-13
Defines an object used to manage the configuration settings used with other Collaboration Data Objects (CDO).
CLSID
CD000002-8B95-11D1-82DB-00C04FB1625D
ProgID
CDO.Configuration
Type Library
Microsoft CDO for Windows 2000 Library
Microsoft CDO for Exchange 2000 Library
Inproc Server
CDOSYS.DLL, CDOEX.DLL
Threading Model
Both
Implemented Interfaces
Remarks
Configuration settings are made up of a set of fields (properties) that are simply name/value pairs. Each field is represented as a Microsoft® ActiveX® Data Objects (ADO) Field object contained in an ADO Fields collection. Most configuration fields used for messaging are in the https://schemas.microsoft.com/cdo/configuration/ namespace. For calendaring applications, you specify a time zone using the urn:schemas:calendar:timezone and urn:schemas:calendar:timezoneid fields, and a calendar folder URL using the "CalendarLocation" field.
To increase performance, you can share a single Configuration object among your other CDO objects, and cache the object for reuse. For example, you can gather the configuration information for a particular user in an ASP application Session_OnStart event, and then store the Configuration object in the ASP Session collection. When each ASP page within the session executes, you can retrieve the Configuration object from the Session collection and attach it to each object. You therefore increase performance by not re-creating and populating a Configuration object for each page or for each object you use.
Examples
Assume that the computer on which this example will run has neither a SMTP service nor Microsoft Outlook® Express installed. In this case, you need to send the message through some SMTP service on the network and must configure the Message object completely. Further assume that the SMTP service through which you intend to send messages requires that you authenticate yourself using basic (clear-text) authentication. An instance of the Configuration Component Object Model (COM) class is created and the configuration fields in the object are set with values such as the required SMTP server name, port, authentication, and user name and password. Additional values are set, such as the e-mail address, account name and reply e-mail address. The values used in the example are listed in the following table. Each field is in the https://schemas.microsoft.com/cdo/configuration/ namespace.
Field | Value |
---|---|
smtpserver |
fakesmtp.example.com |
smtpserverport |
25 |
sendusing |
cdoSendUsingPort (2) |
smtpaccountname |
My Name |
sendemailaddress |
"My Self" <myself@example.com> |
senduserreplyemailaddress |
"Another" <another@example.com> |
smtpauthenticate |
cdoBasic (1) |
sendusername |
domain\username |
sendpassword |
password |
After the Configuration object has been populated with relevant configuration information, the object reference is set on a Message object. The Message object uses the configuration information to send the message. In the examples that follow, the fully qualified field names are used to clarify the process. However, there are string constants (as type library modules) in the type library for each of these field names.
' Reference to Microsoft ActiveX Data Object 2.5 Library
' Reference to Microsoft CDO for Exchange 2000 Library
Dim iConf as New CDO.Configuration
Dim Flds as ADODB.Fields
Set Flds = iConf.Fields
' The full field name strings are used below to clarify this process.
' The CDO for Windows 2000 type library contains string modules
' that provide these values as named constants.
' Use these module constants to avoid typos and so forth.
Flds("https://schemas.microsoft.com/cdo/configuration/smtpserver") = "fakesmtp.example.com"
Flds("https://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
Flds("https://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
' CdoSendUsing enum value = 2
Flds("https://schemas.microsoft.com/cdo/configuration/smtpaccountname") = "My Name"
Flds("https://schemas.microsoft.com/cdo/configuration/sendemailaddress") = """MySelf"" <myself@example.com>"
Flds("https://schemas.microsoft.com/cdo/configuration/senduserreplyemailaddress") = """Another"" <another@example.com>"
Flds("https://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
Flds("https://schemas.microsoft.com/cdo/configuration/sendusername") = "domain\username"
Flds("https://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
Flds.Update
' The Item property on the Fields interface is the default.
' The Value property on the returned Field interface is the default.
' Fully expanded, each line would appear as follows:
'
' Flds.Item("property").Value = [value]
Dim iMsg as New CDO.Message
Set iMsg.Configuration = iConf
' ... Compose message; add attachments and so forth.
' Configuration settings in Config object are used to send the message.
iMsg.Send
#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
main( ){
CoInitialize(NULL);
{
IMessagePtr IMsg(__uuidof(Message));
IConfigurationPtr iConfig = Msg->Configuration;
FieldsPtr Flds;
FieldPtr Fld;
Flds = iConfig->Fields;
// The full strings for field names are used to clarify the process.
// The cdoex.h header file contains BSTR constants that
// can be used to avoid typos and so forth.
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/smtpserver")]->Value = _variant_t("fakesmtp.example.com") ;
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/smtpserverport")]->Value = _variant_t((long)25) ;
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/sendusing")]->Value = _variant_t((int)cdoSendUsingPort) ;
// this value is 2
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/smtpaccountname")]->Value = _variant_t("My Name") ;
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/sendemailaddress")]->Value = _variant_t("\"MySelf\" <myself@example.com>") ;
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/senduserreplyemailaddress")]->Value = _variant_t("\"Another\" <another@example.com>") ;
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/smtpauthenticate")]->Value = _variant_t((long)cdoBasic) ;
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/sendusername")]->Value = _variant_t("domain\\username") ;
Flds->Item[_variant_t("https://schemas.microsoft.com/cdo/configuration/sendpassword")]->Value = _variant_t("password") ;
Flds->Update();
/*
** These string constants are available in the cdosys.h header file,
** but are not put in the cdosys.tlh file when #import runs.
const BSTR cdoSMTPServer = = L"https://schemas.microsoft.com/cdo/configuration/smtpserver";
and so on additionally for each of these:
cdoSMTPServer
cdoSMTPAccountName
cdoSMTPAuthenticate
cdoSendUsingMethod (You can use the CdoSendUsing enumeration for this.)
cdoSMTPServerPort
cdoSendEmailAddress
cdoSendUserName
cdoSendPassword
cdoSendUserReplyEmailAddress
*/
iMsg->Configuration = iConfig;
// ... Compose message; add attachments and so forth.
iMsg->Send();
}
CoUninitialize();
}