User Guide Cancel

cfexchangeconnection

 

Description

Opens or closes a persistent connection to a Microsoft Exchange server, or gets information about mailbox subfolders. You must have a persistent or temporary connection to use the cfexchangecalendar, cfexchangecontact, cfexchangemail, and cfexchangetask tags.

History

ColdFusion (2025 release): A new attribute access_token is added to the tag which allows exchange online connection. View the section Exchange online with cfexchangeconnection for more information.

ColdFusion (2018 release) Update 2: Added support for Microsoft Exchange Server 2016.

ColdFusion 10: Added the attribute serverVersion.

ColdFusion 8: Added this tag.

Category

Communications tags

Syntax

open
<cfexchangeconnection
required
action = "open"
connection = "connection ID">
server = "Exchange server ID"
username = "Exchange user ID">
optional

access_token="token"
ExchangeApplicationName = "Application name"
ExchangeServerLanguage = "Language name"
formBasedAuthentication = "no|yes">
formBasedAuthenticationURL = "URL">
mailboxName = "Exchange mailbox">
password = "user password"
port = "IP port"
protocol = "http|https"
proxyHost = "proxy host URL"
proxyPort = "proxy IP port"

getSubfolders
<cfexchangeconnection
required
action = "getSubfolders"
connection = "connection ID">
name = "query name"
optional
folder = "Exchange folder path">
recurse = "no|yes">
OR
<cfexchangeconnection
required
action = "getSubfolders"
name = "query name"
server = "Exchange server ID"
username = "Exchange user ID">
optional
ExchangeApplicationName = "Application name"
ExchangeServerLanguage = "Language name"
folder = "Exchange folder path">
formBasedAuthentication = "no|yes">
formBasedAuthenticationURL = "URL">
mailboxName = "Exchange mailbox">
password = "user password"
port = "IP port"
protocol = "http|https"
proxyHost = "proxy host URL"
proxyPort = "proxy IP port"
recurse = "no|yes">

close
<cfexchangeconnection
required
action = "close"
connection = "connection ID">

 

Note: You can specify this tag's attributes in an attributeCollection attribute whose value is a structure. Specify the structure name in the attributeCollection attribute and use the tag's attribute names as structure keys.

See also

cfexchangecalendarcfexchangecontactcfexchangefiltercfexchangemailcfexchangetaskManaging connections to the Exchange server in the Developing ColdFusion Applications

Attributes

Attribute

Action

Req/Opt

Default

Description

action

all

Required

 

The action to take. Must be one of the following values:

  • open: Open a new persistent named connection
  • close: Close a named connection
  • getSubfolders: Get information about the subfolders of a specific folder.
access_token   Optional   An oauth access token built with Microsoft Graph API scopes that is required to connect with exchange online.

connection

all

Required for open and close actions

 

The name of the connection. You can specify this ID in any tag that you use with the open connection.

ExchangeApplicationName

opengetSubfolders

Optional

exchange

The name of the Exchange application to
use in the URL that accesses the server.
Specify this attribute if your IIS server
does not use the default name for your
Exchange application.

ExchangeServerLanguage

opengetSubfolders

Optional

english

The language of the Exchange server.
If you are not sure, you can specify the
empty string.
For all values except english, including
the empty string, the tag tries to get
folder names from the server in the
client's local language.
In some cases, such as when there is a
large amount of data on the server,
it might take significant time to
get folder names from Exchange server
in the local language.

folder

getSubfolders

Optional

The root of the mailbox

The forward slash delimited path from
the root of the mailbox to the folder for
which to get subfolders. If a folder name
contains a forward slash, use the xF8FF
escape sequence to specify the character
in the name.

formBasedAuthentication

opengetSubfolders

Optional

no

A Boolean value that specifies whether
to display a login form and use form based authentication when making the connection.
If the attribute value is no (the default),
and the Exchange server returns a 440 
error status when ColdFusion tries to
connect, ColdFusion displays the
login form and attempts to use
form based authentication.
Therefore, you can safely omit this
attribute if you do not know if the
server requires form based authentication.

formBasedAuthenticationURL

opengetSubfolders

Optional

 

The URL to which to post the user ID and
password when an Exchange server
uses form-based authentication.
Use this attribute only if your Exchange
server does not use default URL for
form-based authentication.
The default URL has the form https://exchangeServer/exchweb/bin/
auth/owaauth.dll, for example, {{

https://exchange.mycompany.com/
exchweb/bin/auth/owaauth.dll

}}.

mailboxName

opengetSubfolders

Optional

 

The ID of the Exchange mailbox to use. Specify this attribute to access a mailbox whose owner has delegated access rights to the account specified in the username attribute.

name

getSubfolders

Required

 

The name of the ColdFusion query variable that contains information about the subfolders.

password

opengetSubfolders

Optional

 

The user's password for accessing the Exchange server.

port

opengetSubfolders

Optional

80

The port the server listens to, most commonly port 80.

protocol

opengetSubfolders

Optional

http

The protocol to use for the connection. Valid values are http and https.

proxyHost

opengetSubfolders

Optional

 

The URL or IP address of a proxy host, if necessary for access to the network.

proxyPort

opengetSubfolders

Optional

 

The port on the proxy server to connect to, most commonly port 80.

recurse

getSubfolders

Optional

false

A Boolean value:

  • true: get information on the immediate subfolders of the specified folder only.
  • false: get information on all levels of subfolders of the specified folder.

server

opengetSubfolders

Required

 

The IP address or URL of the server that is providing access to Exchange.

serverVersion

 

Optional

 

Specifies the Microsoft Exchange Server version. The values are:

  • 2013 
  • 2016
  • 2019

The value you specify overrides the value that you specify at the application level.

username

opengetSubfolders

Required

 

The Exchange user ID.

 

Note: If you specify the getSubfolders action, you can specify the attributes that are listed as working for both the open and getSubfolders actions only if you do not specify a connection attribute.

Usage

The cfexchangeconnection tag can open or close a persistent connection with an Exchange server. If you use the cfexchangeconnection to open a connection before you use any cfexchangecalendar, cfexchangecontact, cfexchangemail, or cfexchangetask tags, you can use multiple tags to interact with the Exchange server without incurring the overhead of creating a connection for each tag.

Note: To establish any connection, the Exchange server must grant you Outlook Web Access. For information on how to enable this access, see Enabling access to the Exchange server in Managing connections to the Exchange server in the Developing ColdFusion Applications. Also, you cannot establish a connection to an Exchange server if you require a special authentication step, such as requiring a VPN PIN or performing biometric authentication, on a server that is outside your firewall, and the authentication server then routes the messages to your Exchange server inside the firewall.

Use the cfexchangeconnection tag to close a persistent connection when you are finished accessing the Exchange server. If you do not close the connection, it remains open and does not time out.
The cfexchangecalendar, cfexchangecontact, cfexchangemail, and cfexchangetask tags also let you specify the open action connection attributes (but not the connection attribute) to create a temporary connection that lasts for the duration of the single tag's activities, without requiring you to use the cfexchangeconnection tag to create the connection. In this case, ColdFusion automatically closes the connection when the tag completes processing.
The getSubfolders action can get information about the immediate subfolders of a specified folder (or of the top level of the mailbox), or information about all levels of subfolders. You must have a persistent connection to get the subfolders.
The query returned by the getSubfolders action has the following columns:

Column

Contents

FOLDERNAME

The name of the subfolder, for example, ColdFusion.

FOLDERPATH

The forward slash  delimited path to the folder from the mailbox root, including the folder name, for example, Inbox/Marketing/ColdFusion.

FOLDERSIZE

Size of the folder in bytes.

 

Note: The ColdFusion exchange tags, including cfexchangeconnection use WebDAV to connect to the exchange server. HTTP access must be enabled on the exchange server to use the tags.

Example

The following example opens a connection, gets all mail sent from spamsource.com, and deletes the messages from the Exchange server:

<cfexchangeConnection
action="open"
username="#user1#"
password="#password1#"
server="#exchangeServerIP#"
connection="testconn1">

<cfexchangemail action="get" name="spamMail" connection="testconn1">
<cfexchangefilter name="fromID" value="spamsource.com">
</cfexchangemail>

<cfloop query="spamMail">
<cfexchangeMail action="delete" connection="testconn1" uid="#spamMail.uid#">
</cfloop>

<cfexchangeConnection
action="close"
connection="testconn1">

Exchange online with cfexchangeconnection

As Microsoft plans to discontinue EWS support for Exchange Online in October 2026, Support for Microsoft Graph API has been added. To access any of these resources in exchange online, an access token with appropriate scope is expected which will be accepted through access_token attribute in case of exchange online. In comparision with on prem it replaces your username and password. even the server is optional if you pass the access_token.

  1. Log in to the Microsoft Entra Admin center.

  2. Navigate to Azure Active Directory > App Registrations > New Registration. 

  3. Provide an application name, select supported account types, and configure the redirect URI. See Register an application with the Microsoft identity platform for more information.

  4. After registering the app, note the Application (Client) ID and Directory (Tenant) ID.

Generate the access tokens with specific permissions required by the application.

Comparison of on-prem and online deployments:

<cfexchangeconnection
action="open"
connection="old-connection"
username="your-email@example.com"
password="your-password"
server="https://outlook.office365.com/EWS/Exchange.asmx"
protocol="https"
applicationname="MyExchangeApp"
>
<cfexchangeconnection action="open" connection="old-connection" username="your-email@example.com" password="your-password" server="https://outlook.office365.com/EWS/Exchange.asmx" protocol="https" applicationname="MyExchangeApp" >
<cfexchangeconnection 
    action="open" 
    connection="old-connection" 
    username="your-email@example.com" 
    password="your-password" 
    server="https://outlook.office365.com/EWS/Exchange.asmx" 
    protocol="https" 
    applicationname="MyExchangeApp" 
> 

In the above case the username, password, and application are part of access token generation, and the protocol is always https for online which results in the following example scenario which is what should be used to connect with Exchange online.

<cfexchangeConnection
action="open"
access_token="#application.token#"
connection="newconnection"
>
<cfexchangeConnection action="open" access_token="#application.token#" connection="newconnection" >
<cfexchangeConnection 
    action="open" 
    access_token="#application.token#" 
    connection="newconnection" 
> 

Get help faster and easier

New user?