Creating and Using COM Objects

The following example uses cfobject to create the CDO (Collaborative Data Objects) for NTS NewMail object to send mail.

<cfobject type="COM"
    action="Create"
    name="Mailer"
    class="CDONTS.NewMail">

Note

CDO is installed by default on all Windows NT and 2000 operating systems that have installed the Microsoft SMTP server. In Windows NT Server environments, the SMTP server is part of the Option Pack 4 set up. In Windows 2000 Server and Workstation environments, it is bundled with the operating system. For more information on CDO for NTS, see http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/cdo/_olemsg_overview_of_cdo.htm.


You must create the component in ColdFusion before your application pages can invoke any methods or assign any properties in the component. This sample CDO for NTS NewMail component includes a number of methods and properties to perform a wide range of mail-handling tasks. (In the OLE/COM Viewer, methods and properties might be grouped together, so you might find it difficult to distinguish between them at first.)

The CDO for NTS NewMail object includes the following properties:

Body [ string ]
Cc  [ String ]
From  [ String ]
Importance  [ Long ]
Subject  [ String ]
To  [ String ]

You use these properties to define elements of the mail message you want to send. The CDO for NTS NewMail object also includes a method with a number of optional arguments to send messages:

Send()

Connecting to COM objects

The action attribute of cfobject provides two ways to connect to COM objects:

  • Create method (cfobject action="Create") Takes a COM object, typically a DLL, and instantiates it prior to invoking methods and assigning properties.
  • Connect method (cfobject action="Connect") Links to an object that is already running on the server, typically an executable.

You can also use the context attribute to specify the object context. If you do not specify a context, ColdFusion uses the setting in the registry.

  • InProc An in-process server object (typically a DLL) that is running in the same process space as the calling process, such as ColdFusion.
  • local An out-of-process server object (typically an exe file) that is running outside the ColdFusion process space but running locally on the same server.
  • remote An out-of-process server object (typically an exe file) that is running remotely on the network. If you specify remote, you must also use the server attribute to identify where the object resides.

Setting properties and invoking methods

The following example, using the sample Mailer COM object, shows how to assign properties to the mail message you want to send and how to execute component methods to handle mail messages.

In the example, form variables provide method parameters and properties, such as the name of the recipient, the desired e-mail address, and so on.

<!--- First, create the object --->
<cfobject type="COM"
  action="Create"
  name="Mailer"
  class="CDONTS.NewMail">

<!--- Then, use the form variables from the user entry form to
  populate a number of properties necessary to create and send the
  message. --->
<cfset Mailer.From = "#Form.fromName#">
<cfset Mailer.To = "#Form.to#">
<cfset Mailer.Subject = "#Form.subject#">
<cfset Mailer.Importance = 2>
<cfset Mailer.Body = "#Form.body#">
<cfset Mailer.Cc = "#Form.cc#">

<!--- Last, use the Send() method to send the message.
  Invoking the Send() method destroys the object.--->
<cfset Mailer.Send()>

Note

Use the cftry and cfcatch tags to handle exceptions thrown by COM objects. For more information on exception handling, see "Handling Exceptions in ColdFusion".