Whatever message this page gives is out now! Go check it out!

cfexchangecalendar

Last update:
May 18, 2026

Description

Creates, deletes, modifies, gets, and responds to Microsoft Exchange calendar events, and gets calendar event attachments.

History

  • ColdFusion (2025 release):
    • Changes:
      • Quality now includes a confidence score, measured in percentage. The quality will be averaged based on the attendee availability as following:
        • Free = 100%
        • Busy = 0%
        • Unknown = 49% (MS Graph API standard)
    • Deviation:
      • Quality was measured by Excellent, Good, Fair, or Poor.
    • Added the attribute access_token.
  • ColdFusion (2023 release) Update 5: Added the attributes usernamepassword, and server.
  • ColdFusion (2018 release): Added the optional attribute timeZone for action="create".
  • ColdFusion 11: Added three new optional attributes to the cfexchangecalendar tag for managing secondary calendars. These attributes are applicable for get and create actions only and valid for exchange server version starting from 2010. Secondary calendars can be specified in the exchangecalendar tag either using secondary calendar folder ID or using the calendar folder path
  • ColdFusion 10: getUserAvailability, getRooms, getRoomsList
    • Added the attribute serverVersion.
  • ColdFusion 8: Added this tag.

Category

Syntax

<cfexchangecalendar

required

action = "create"

event = "#event information structure#"

optional

connection = "connection ID"

result = "variable for event UID"
timeZone="Time Zone for the event">
delete

<cfexchangecalendar

required

action = "delete"

uid = "event UID,event UID, ..."

optional

connection = "connection ID"

message = "string"

notify = "yes|no">

deleteAttachments

<cfexchangecalendar

required

action = "deleteAttachments"

uid = "event UID"

optional

connection = "connection ID">

get

<cfexchangecalendar

required

action = "get"

name = "query identifier"

optional

connection = "connection ID">

getAttachments

<cfexchangecalendar

required

action = "getAttachments"

name = "query identifier"

uid = "event UID"

optional
access_token="token"

attachmentPath = "directory path"

connection = "connection ID">

generateUniqueFilenames = "no|yes"

getRooms

<cfexchangecalendar

action = "getRooms"

emailAddress = "e-mail_ address"

name = "name"

connection = "connection_ID"/>

getRoomsList

<cfexchangecalendar

action = "getRoomList"

name = "name"

connection = "connection_ID"/>

getUserAvailability

<cfexchangecalendar

action = "getUserAvailability"

attendees = "attendee_list"

connection = "connection_ID"

startDate = "date"

endDate = "date"

dataRequestType = "freeBusy|suggestions|freeBusyandSuggestions"

name = "name" />

modify

<cfexchangecalendar

required

action = "modify"

event = "#event information structure#"

uid = "event UID"

optional

connection = "connection ID">

respond

<cfexchangecalendar

required

action = "respond"

responseType = "accept|decline|tentative"

uid = "event UID"

optional

connection = "connection ID"

message = "string">

notify = "yes|no">
Note: For all actions, see cfexchangeconnection for additional attributes that you use if you do not specify the connection attribute. If you omit the connection attribute, create a temporary connection by specifying cfexchangeconnection tag attributes in the cfexchangecalendar tag. In this case, ColdFusion closes the connection when the tag completes. For details, see the cfexchangeconnection tag open action.
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

Attributes

Attribute
Action
Req/Opt
Default
Description
action
N/A
Required
The action to take. Must be one of the following values:
  • create
  • delete
  • deleteAttachments
  • get
  • getAttachments
  • getRooms
  • getRoomsList
  • getUserAvailability
  • modify
  • respond
access_token Optional An oauth access token built with Microsoft Graph API scopes that is required to connect with exchange online.
usernameallOptional The Exchange user ID.
passwordallOptional The password for accessing the Exchange server.
serverallOptional The IP address or URL of the server that is providing access to Exchange.
attachmentPath
getAttachments
Optional
The filepath of the on-disk or in-memory directory in which to put the attachments. If an on-disk directory does not exist, ColdFusion creates it.
Note: If you omit this attribute, ColdFusion does not save any attachments. If you specify a relative path, the path root is the ColdFusion temporary directory, which is returned by the GetTempDirectory function.
attendees
getUserAvailability
Required
Comma-separated list of all attendees.
connection
all
Optional
The name of the connection to the Exchange server, as specified in the cfexchangeconnection tag. If you omit this attribute, you must create a temporary connection by specifying cfexchangeconnection tag connection attributes in the cfexchangecalendar tag.
dataRequestType
getUserAvailability
Required
  • freeBusy: Returns an array of availability details.
  • Suggestions: Returns an array of struct that contains suggestion details.
  • freeBusyandSuggestions: Returns both the array of suggestions and an array of attendeeavailability. See the sections on suggestion struct and attendeeavailability struct for details.
emailAddress
getRooms
Optional
Defines the Simple Mail Transfer Protocol (SMTP) address of a mailbox user.
endDate
getUserAvailability
Required
A string that ColdFusion can interpret as a date-time value.
event
createmodify
Required
A reference to the structure that contains the event properties to be set or changed, and their values. Specify this attribute in number signs (#). The event attribute also supports the categories key.

For more information on the event structure, see Usage.
getOccurrence
TrueFalse
Optional
If True, retrieves all occurrences of a recurring event between specified startDate and EndDate values and also, any single events. You can not use cfExchangeFilter tag if you specify getOccurrence as True.
generateUnique Filenames
getAttachments
Optional
no
A Boolean value that specifies whether to generate unique filenames if multiple attachments have the same filenames. If two or more attachments have the same filename and this option is yes, ColdFusion appends a number to the filename body (before the extension) of any conflicting filenames. Thus, if three attachments have the name myfile.txt, ColdFusion saves the attachments as myfile.txt, myfile1.txt, and myfile2.txt.
message
deleterespond
Optional
The text of an optional message to send in the response or deletion notification.
name
getAttachments
getUserAvailability
getRoomsListgetRooms
Required
The name of the ColdFusion query variable that contains the retrieved events or information about the attachments that were retrieved. For more information on the returned data, see Usage.
notify
deleterespond
Optional
true
Boolean value that specifies whether to notify others of the changes made to the event.
responseType
respond
Required
Must be one of the following values:
  • accept
  • decline
  • tentative
result
create
Optional
The name of a variable that contains the UID of the event that is created. You use the UID value in the uid attribute of actions other than create to identify the event to be acted on.
serverVersion
Optional
2007
Specifies the Microsoft Exchange Server version. The values are:
  • 2003
  • 2007
  • 2010 If you do not specify the details, 2007 is taken by default. The value you specify overrides the value that you specify at the application level.
startDate
getUserAvailability
Required
A string that ColdFusion can interpret as a date-time value.
timeZone Optional 
Specify the time zone for the event as a struct in the format- key.timeZone="UTC+05:30".
For example,  UTC+02:30, UTC-05:00 , or UTC+00:00.
uid
delete
getAttachments
modify
respond
Required
Case-sensitive Exchange UID value or values that uniquely identify the event or events on which to perform the action. For the delete action, this attribute can be a comma-delimited list of UID values. The deleteAttachments, getAttachments, modify, and respond actions allow only a single UID value.
folderid Optional Specify the calendar folder ID from which the calendar items need to be managed. If the  folder ID is not a valid calendar, an error will be reported.
folderpath Optional 
Full path to the calendar folder in the mailbox store. Path delimiter also can be specified in the tag by using the pathdelimiter attribute.
If both folderid and folderpath are not specified, cfexchangecalendar tag manages the default user calendar. If both folderid and folderpath are specfied, folderid will be considered.
pathdelimiter Optional/
Lets you specify the delimiter that is used to separate the folders in the folderpath attribute.

Usage

The cfexchangecalendar tag manages calendar events on the Exchange server. Use the cfexchangecalendar to do the following actions:
  • Create an appointment or meeting event. You can create all-day events.
  • Delete one or more events.
  • Get one or more events that conform to an optional set of filter specifications, such as the subject, sender or recipient ID, time received, and so on.
  • Get the attachments for a specific event.
  • Modify an existing event.
  • Respond to an event.
    To use this tag, you must have a connection to an Exchange server. If you are using multiple tags that interact with the Exchange server, such as if you are creating several contact records, use the cfexchangeconnection tag to create a persistent connection. Then specify the connection identifier in each cfexchangecalendar tag, or in any other ColdFusion Exchange tag, if you are also accessing tasks, contacts, or mail. Doing this eliminates the overhead of creating and closing the connection for each tag. Alternatively, you can create a temporary connection that lasts only for the time that ColdFusion processes the single cfexchangecalendar tag. To do this, specify the connection attributes directly in the cfexchangecontact tag. For details on the connection attributes, see the cfexchangeconnection tag.
    Note: To create an Exchange calendar appointment, create a calendar event and do not specify any required or optional attendees.

The create action

When you specify the create action, the event attribute must specify a structure that contains the information that defines the events. The structure can have the following entries:
Element
Default
Description
AllDayEvent
no
A Boolean value that indicates whether this is an all-day event.
Attachments
One or more paths to the files to send as attachments. Separate filepaths with semicolons (;) for Windows, and colons (:) for UNIX and Linux. Paths to the attachments must be absolute.

If you specify one or more attachments for a modify action, the specified attachments are added to any existing attachments; the pre-existing attachments are not deleted.
Categories
A comma-delimited list of categories. The filter searches for events that match all the categories in the list.
Duration
The duration of the event in minutes.
EndTime
The end time of the event, in any valid ColdFusion date-time format.
Importance
normal
One of the following values:
  • high
  • normal
  • low.
IsRecurring
A Boolean value that indicates whether this event repeats. If yes, specify a RecurrenceType element and elements to specify the recurrence details. For information on the recurrence fields, see the next table.
Location
A string that specifies the location of the event.
Message
A string that contains a message about the event. The string can include HTML formatting.
OptionalAttendees
A comma-delimited list of mail IDs.
Organizer
A string that specifies the name of the meeting organizer.
Reminder
The time, in minutes before the event, at which to display a reminder message.
RequiredAttendees
A comma-delimited list of mail IDs.
Resources
A comma-delimited list of mail IDs for Exchange scheduling resources, such as conference rooms and display equipment.
Sensitivity
The valid values are normal, company-confidential, personal, and private.
StartTime
The start time of the event, in any valid ColdFusion date-time format.

If you specify a date and time in this attribute and specify a YEARLY RecurrenceType with no other recurrence attributes, the event recurs yearly at the day and time specified in this attribute.
Subject
A string that describes the event subject.
The following table lists the elements that you use to specify the event recurrence if you set the IsRecurring field to a yes value. For a detailed description of how to specify event recurrence, see Specifying Calendar recurrence in Working with meetings and appointments in the Developing ColdFusion Applications.
Element
Type
Default
Description
RecurrenceType
all
DAILY
Used only if the structure has a yes IsRecurring element. Must be one of the following values:
  • DAILY
  • WEEKLY
  • MONTHLY
  • YEARLY
RecurrenceNoEndDate
all
yes
Boolean value; if yes, the event recurs until you change or delete the event. Cannot be used with RecurrenceCount or RecurrenceEndDate.
RecurrenceCount
all
The number of times the event recurs. Cannot be used with RecurrenceEndDate or RecurrenceNoEndDate.
RecurrenceEndDate
all
The date of the last recurrence. Cannot be used with RecurrenceCount or RecurrenceNoEndDate.
RecurrenceFrequency
DAILY, WEEKLY, MONTHLY
1
The frequency of the recurrence in days, weeks, or months, depending on the type. For example, for DAILY recurrence, a RecurrenceFrequency of 3 schedules the event every three days.
RecurEveryWeekDay
DAILY
The recurrence of the event on every week day, but not on Saturday or Sunday. Cannot be used with RecurrenceFrequency.
RecurrenceDays
WEEKLY
The day or days of the week on which the event occurs. Must be one or more of the following values in a comma-delimited list :MON , TUE, WED, THU, FRI, SAT, {{SUN}}If you omit this field for a weekly recurrence, the event recurs on the day of the week that corresponds to the specified start date.
RecurrenceDay
MONTHLY, YEARLY
The day of the week on which the event occurs. Must be one of the following values:
  • MON
  • TUE
  • WED
  • THU
  • FRI
  • SAT
  • SUN
RecurrenceWeek
MONTHLY, YEARLY
The week of the month or year on which the event recurs. The valid values are:
  • first
  • second
  • third
  • fourth
  • last
RecurrenceMonth
YEARLY
The month of the year on which the event recurs. The valid values are JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, and DEC.

The delete action

When you specify the delete action, specify a uid attribute with a comma-delimited list of one or more Exchange UIDs that identify the events to delete. Use the get action, with an appropriate filter expression, to determine the UID values to specify.

If all UIDs that you specify are invalid, the cfexchangecalendar tag generates an error. If at least one UID is valid, the tag ignores any invalid UIDs and deletes the items specified by the valid UID.

The get action

When you specify the get action, use child cfexchangefilter tags to specify the messages to get. For detailed information on filters, see cfexchangefilter.
When the tag completes processing, the query object specified by the name attribute contains one record for each retrieved message. Each record has the following columns:
AllDayEvent
Duration
EndTime
From
HasAttachment
HtmlMessage
Importance
IsRecurring
Location
Message
OptionalAttendees
Organizer
Reminder
RequiredAttendees
Resources
Sensitivity
StartTime
Subject
UID
Categories
The following table describes the From, HtmlMessage, Message, and UID fields. For detailed information on the other fields, see the table in the create action description.
Column
Description
From
The Exchange ID of the person who created the event.
HtmlMessage
An HTML-formatted version of the message about the event.
Message
A plain-text version of the message about the event.
UID
The Exchange unique identifier for the mail event. Use this value to identify the event in the delete, getAttachments, and modify actions.

The getAttachments action

When you use the getAttachments action, specify a single UID and a name attribute. The cfexchangecalendar tag populates a query object with the specified name. Each record has the following information about an attachment to the event specified by the UID:
Column
Description
attachmentFileName
The filename of the attachment.
attachmentFilePath
The absolute path of the attachment file on the server. If you omit the attachmentPath attribute, this column contains the empty string.
CID
The content-ID of the attachment. Typically used in HTML img tags to embed images in a message.
mimeType
The MIME type of the attachment, such as text/html.
isMessage
A Boolean value that specifies whether the attachment is a message.
size
The attachment size in bytes.
The tag places the attachments in the directory specified by the attachmentPath attribute. If you omit the attachmentPath attribute, ColdFusion does not get any attachments, it gets the information about the attachments. This lets you determine the event's attachments without incurring the overhead of getting the attachment files .Use the following syntax to specify an in-memory attachmentPath directory. In-memory files are not written to disk and speed processing of transient data.
attachmentpath = "ram:///path"
The path can include multiple directories, for example ram:///petStore/orders/messageAttachments. Create all directories in the path before you specify the file. For more information on using in-memory files, see Working with in-memory files in Optimizing ColdFusion applications in the Developing ColdFusion Applications.
The getAttachments action works only if authentication for EWS (Exchange Web Services) is set to basic in the server setup of Exchange. IWA (Integrated Windows Authentication) is not supported.

The modify action

When you specify the modify action, you select the event to modify by specifying a uid attribute with single event UID; multiple UIDs are not allowed. You populate the event structure with only the fields that you are changing. For a detailed description of the fields and their valid values, see the table in the create action.

If an event has attachments and you specify attachments when you modify the event, the new attachments are added to the previous attachments; they do not replace them. Use the deleteAttachments action to remove any attachments.

The respond action

You use the respond action to respond to a meeting notification that you received by using the cfexchangemail tag. A meeting does not appear in your calendar, and cannot be accessed by using the cfexchangecalendar tag, until you respond to the mail message and accept or tentatively accept the request.
When you specify the respond action, specify the UID, from the notification mail message, of the event to which you are responding. Also specify the response type; that is, whether you are accepting, rejecting, or tentatively accepting the event. You can optionally specify a message to include in the response and set a flag whether to notify the creator of the event of your response. For detailed information on using the respond action, see Working with meetings and appointments in the Developing ColdFusion Applications.

Suggestions struct values

Struct values
Description
date
Suggested day for the meeting.
quality
The quality of the suggested day, if Excellent, Good, Fair or Poor.
TimeSuggestion
An array of struct that contains the following values:
  • MeetingDate: Suggested meeting time.
  • Quality: The quality of the time. It can be Excellent, Good, Fair, or Poor.
  • array of conflicts: The conflicts at the suggested time. This is a struct that contains the following values: ConflictType (the type of conflict, which can be individualAttendeeConflict, which is a conflict with an attendee, GroupConflict which is a conflict with at least one member of a group, GroupTooBigConflict which is a conflict with at least one member of a group, but the group was too big for detailed information to be returned, and UnknownAttendeeConflict which is a conflict with an unresolvable attendee or an attendee that is not a user, group, or contact).
  • FreeBusyStatus: Gets the free/busy status of the conflicting attendee. Only meaningful when ConflictType is equal to IndividualAttendee. The values are Free, Tentative, Busy, OOF (time slot associated with the appointment appears as Out of Office) or NoData (no free/busy status is associated with the appointment).
  • NoOfMembers: Gets the number of users, resources, and rooms in the conflicting group. Only meaningful when ConflictType is equal to ConflictType GroupConflict.
  • NoOfMembersAvailable: Gets the number of available members (whose status is Free) in the conflicting group. Only meaningful when ConflictType is equal to ConflictType GroupConflict.
  • NoOfMembersWithConflict: Gets the number of members who have a conflict (whose status is Busy, OOF, or Tentative) in the conflicting group. Only meaningful when ConflictType is equal to ConflictType GroupConflict.
  • NoOfMembersWithNoData: Gets the number of members who do not have published free/busy data in the conflicting group. Only meaningful when ConflictType is equal to ConflictType GroupConflict.
  • isWorkTime: If the suggested meeting happens in the work hours.

Values of the struct attendeeavailability

Struct values
Description
CalendarEvent
A struct that contains the following values:
  • startTime: The start date and time of the event.
  • endTime: The end date and time of the event.
  • freeBusyStatus: The free/busy status associated with the event. It can have following values: Free, tentative, busy , OOF (Out of Office), or NoData (no free/busy status is associated with the appointment).
  • details: The details of the calendar event; details is null if the user who requests for details does not have the appropriate rights. details is a struct that contains the following values: location (calendar location), eventstoreId (store ID of the calendar event), and Subject (can be isException which is a boolean value that indicates if the calendar event is an exception in a recurring series, isMeeting which is a boolean value that indicates if the calendar event is a meeting, isPrivate which is a boolean value that indicates if the calendar event is private, isRecurring which is a boolean value that indicates if the calendar event is recurring, and isRemainderSet which is a boolean value that indicates if the calendar event has a reminder set).
mergedFreeBusyStatus
An array of struct that contains status. The status can be
  • Free : The time slot associated with the appointment appears as Free.
  • Tentative : The time slot associated with the appointment appears as Tentative.
  • Busy : The time slot associated with the appointment appears as Busy
  • OOF: The time slot associated with the appointment appears as Out of Office.
  • NoData: No free/busy status is associated with the appointment.
  • result: The result associated with the response. This can be success , warning, or error.
viewType
The free/busy view type retrieved for the attendee. It can have the following values:
  • None: No view is returned. This value cannot be specified in a call to GetUserAvailability.
  • MergedOnly: An aggregated free/busy stream. If the target user in one forest does not have an Availability service configured, the Availability service of the requestor retrieves the target user's free/busy information from the free/busy public folder. Because public folders only stores free/busy information in merged form, MergedOnly is the only available information.
  • FreeBusy: The legacy status information (free, busy, tentative, and OOF). This also includes the start/end times of the appointments. This view is comprehensive than the legacy free/busy view because individual meeting start and end times are provided instead of an aggregated free/busy stream.
  • FreeBusyMerged: All the properties in FreeBusy with a stream of merged free/busy availability information.
  • Detailed: The legacy status information (free, busy, tentative, and OOF, the start/end times of the appointments; and various properties of the appointment such as subject, location, and importance). This requested view returns the maximum amount of information for which the requesting user is privileged. If merged free/busy information only is available, as with requesting information for users in a Microsoft Exchange Server 2003 forest, MergedOnly is returned. Otherwise, FreeBusy or Detailed are returned.
  • DetailedMerged: Represents all the properties in Detailed with a stream of merged free/busy availability information. If, only merged free/busy information is available, for example if the mailbox exists on a computer running Exchange 2003, MergedOnly is returned. Otherwise, FreeBusyMerged or DetailedMerged is returned.
workingHours
A struct that contains the following details:
  • startTime: The start date and time of the event.
  • endTime: The end date and time of the event.
  • daysOfTheWeek: An array of struct. The working days of the attendees. It can have the following values: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Weekday, and WeekEndDayDay.
  • Timezone: A struct that contains the following fields: id (ID of the time zone definition) and name (name of this time zone definition).

Exchange UID value

For all the cfexchangecalendar actions, the value of the attribute uid is as follows:
  • If exchangeServerVersion is set to 2003 or 2007: The uid indicates the ID of the appointment in the mailbox of the organizer.
  • If exchangeServerVersion is set to 2010: The uid indicates the ID of the received appointment in the mailbox of the attendee. In the case of interaction with Microsoft Exchange server 2003 or 2007, whenever an appointment is created, the UID of the organizer can be used by the attendee for any operation such as responding, deleting, or getting attachments. In the case of Microsoft Exchange server 2010, the behavior is different. If attendees have to perform appointment-related actions, they have to first search for the appointment in their mailbox and then use the UID of that appointment.

Example 1

The following example lets you create, and then modify a calendar event. When you first submit the form, ColdFusion creates the calendar event and redisplays the form with the data you entered. Accept the event before you modify the form and resubmit it. When you submit the form a second time, ColdFusion sends the modification information. For more information, see Working with meetings and appointments in the Developing ColdFusion Applications.
This example resends all the event data (to limit the example length), but you could change the example so that it only sends modified data.
<!--- A self-submitting form for the event information --->

<!--- This example omits recurrence to keep the code relatively simple --->

<cfparam name="form.eventID" default="0">

<!--- If the form was submitted, populate the event structure from it. --->

<cfif isDefined("Form.Submit")>

<cfscript>

sEvent.AllDayEvent="no";

sEvent=StructNew();

sEvent.Subject=Form.subject;

if (IsDefined("Form.allDay")) {

sEvent.AllDayEvent="yes";

sEvent.StartTime=createDateTime(Year(Form.date), Month(Form.date),

Day(Form.date), 8, 0, 0);

}

else {

sEvent.StartTime=createDateTime(Year(Form.date), Month(Form.date),

Day(Form.date), Hour(Form.startTime), Minute(Form.startTime), 0);

sEvent.EndTime=createDateTime(Year(Form.date), Month(Form.date),

Day(Form.date), Hour(Form.endTime), Minute(Form.endTime), 0);

}

sEvent.Location=Form.location;

sEvent.RequiredAttendees=Form.requiredAttendees;

sEvent.OptionalAttendees=Form.optionalAttendees;

//sEvent.Resources=Form.resources;

if (Form.reminder NEQ "") {

sEvent.Reminder=Form.reminder;

}

else {

sEvent.Reminder=0;

}

sEvent.Importance=Form.importance;

sEvent.Sensitivity=Form.sensitivity;

sEvent.message=Form.Message;

</cfscript>

<!--- If this is the first time the form is being submitted

Create a new event. --->

<cfif form.eventID EQ 0>

<!--- Create the event in Exchange --->

<cfexchangecalendar action="create"

username ="#user1#"

password="#password1#"

server="#exchangeServerIP#"

event="#sEvent#"

result="theUID">

<!--- Output the UID of the new event. --->

<cfif isDefined("theUID")>

<cfoutput>Event Added. UID is#theUID#</cfoutput>

<cfset Form.eventID = theUID >

</cfif>

<cfelse>

<!--- The form is being resubmitted with new data, so update the event. --->

<cfexchangecalendar action="modify"

username ="#user1#"

password="#password1#"

server="#exchangeServerIP#"

event="#sEvent#"

uid="#Form.eventID#">

<cfoutput>Event ID #Form.eventID# Updated.</cfoutput>

</cfif>

</cfif>

<cfform format="xml" preservedata="yes" style="width:500" height="600">

<cfinput type="text" label="Subject" name="subject" style="width:435"><br />

<cfinput type="checkbox" label="All Day Event" name="allDay">

<cfinput type="datefield" label="Date" name="date" validate="date" style="width:100">

<cfinput type="text" label="Start Time" name="startTime" validate="time"

style="width:100">

<cfinput type="text" label="End Time" name="endTime" validate="time"

style="width:100"><br />

<cfinput type="text" label="Location" name="location" style="width:435"><br />

<cfinput type="text" label="Required Attendees" name="requiredAttendees"

style="width:435"><br />

<cfinput type="text" label="Optional Attendees" name="optionalAttendees"

style="width:435"><br />

<cfinput type="text" label="Resources" name="resources" style="width:435"><br />

<cfinput type="text" label="Reminder (minutes)" validate="integer" name="reminder"

style="width:200">

<cfselect name="importance" label="Importance" style="width:100">

<option value="normal">Normal</option>

<option value="high">High</option>

<option value="low">Low</option>

</cfselect>

<cfselect name="sensitivity" label="Sensitivity" style="width:100">

<option value="normal">Normal</option>

<option value="company-confidential">Confidential</option>

<option value="personal">Personal</option>

<option value="private">Private</option>

</cfselect>

<cfinput type="textarea" label="Message" name="message" style="width:435;

height:100">

<cfinput type="hidden" name="eventID" value="#Form.EventID#">

<cfinput type="Submit" name="submit" value="Submit">

</cfform>

Example 2

The following example shows how you can get UserAvailability action:Application.cfm
<cfset todayDate = #Now()#>

<cfset fromDate = #DateFormat(todayDate, "mm/dd/yyyy")# & ' ' & #TimeFormat(todayDate, "HH:MM:SS")#>

<!--- Adding one day to present date--->

<cfset toDate1 = DateAdd("d", "1", "#fromDate#")>

<!--- <cfset toDate = #DateFormat(toDate, "mm/dd/yyyy")#&' '&#TimeFormat(toDate,

"HH:MM:SS")#>--->

<cfset toDate1 = #DateFormat(toDate1, "mm/dd/yyyy")# & ' ' & #TimeFormat(toDate1, "HH:MM:SS")#>

<!---Creating a calendar event --->

<cffunction name="constructCalendarStruct" returntype="struct">

<cfargument name="AllDayEvent" type="string"/>

<cfargument name="Duartion" type="string"/>

<cfargument name="EndTime" type="string"/>

<cfargument name="From" type="string"/>

<cfargument name="HasAttachment" type="string"/>

<cfargument name="HtmlMessage" type="string"/>

<cfargument name="Importance" type="string"/>

<cfargument name="IsRecurring" type="string"/>

<cfargument name="Location" type="string"/>

<cfargument name="Message" type="string"/>

<cfargument name="OptionalAttendees" type="string"/>

<cfargument name="Organizer" type="string"/>

<cfargument name="Reminder" type="string"/>

<cfargument name="RequiredAttendees" type="string"/>

<cfargument name="Resources" type="string"/>

<cfargument name="Sensitivity" type="string"/>

<cfargument name="StartTime" type="string"/>

<cfargument name="Subject" type="string"/>

<cfargument name="UID" type="string"/>

<cfscript>

var eventInfo = structNew();

if(isdefined("AllDayEvent") EQ 1)

eventInfo.AllDayEvent = AllDayEvent;

if(isdefined("Duration") EQ 1)

eventInfo.Duration = Duration;

if(isdefined("EndTime") EQ 1)

eventInfo.EndTime = EndTime;

if(isdefined("From") EQ 1)

eventInfo.From = From;

if(isdefined("HasAttachment") EQ 1)

eventInfo.HasAttachment = HasAttachment;

if(isdefined("HtmlMessage") EQ 1)

eventInfo.HtmlMessage = HtmlMessage;

if(isdefined("Importance") EQ 1)

eventInfo.Importance = Importance;

if(isdefined("IsRecurring") EQ 1)

eventInfo.IsRecurring = IsRecurring;

if(isdefined("Message") EQ 1)

eventInfo.Message = Message;

if(isdefined("OptionalAttendees") EQ 1)

eventInfo.OptionalAttendees = OptionalAttendees;

if(isdefined("Organizer") EQ 1)

eventInfo.Organizer = Organizer;

if(isdefined("Reminder") EQ 1)

eventInfo.Reminder = Reminder;

if(isdefined("RequiredAttendees") EQ 1)

eventInfo.RequiredAttendees = RequiredAttendees;

if(isdefined("Resources") EQ 1)

eventInfo.Resources = Resources;

if(isdefined("Sensitivity") EQ 1)

eventInfo.Sensitivity = Sensitivity;

if(isdefined("StartTime") EQ 1)

eventInfo.StartTime = StartTime;

if(isdefined("Subject") EQ 1)

eventInfo.Subject = Subject;

if(isdefined("UID") EQ 1)

eventInfo.UID = UID;

if(isdefined("Location") EQ 1)

eventInfo.Location = Location;

</cfscript>

<cfreturn eventInfo>

</cffunction>

<!--- Function to delete calendar events --->

<cffunction name="deleteAllEvents">

<cfargument name="convariable" type="any"/>

<cfexchangecalendar action="get" name="deleteQuery" connection="convariable">

</cfexchangecalendar>

<cfloop query="deleteQuery">

<cfexchangecalendar action="delete" connection=convariable uid=#deleteQuery.uid#>

</cfloop>

</cffunction>
Availability.cfm
action="open"

username = "user1"

password="Password"

server="IP_Address"

serverversion="2010"

connection="conn1">

<cfexchangeConnection

action="open"

username = "user2"

password="Password"

server="IP_Address"

serverversion="2010"

connection="conn2">

<cfset deleteAllEvents(conn1)>

<cfset deleteAllEvents(conn2)>

<!--- Creating All day event for user1 --->

<cfset eventInfo = constructCalendarStruct

(AllDayEvent="yes",Importance="High",

Subject="Testplan1",StartTime="#fromDate#")>

<cfset eventInfo1 = constructCalendarStruct

(AllDayEvent="yes",Importance="High",

Subject="Testplan",StartTime="#fromDate#")>

<cfexchangeCalendar

action="create"

connection="conn1"

event="#eventInfo#"

result="UID">

<cfscript>sleep(15000);</cfscript>

<cfexchangeCalendar

action="create"

connection="conn2"

event="#eventInfo1#"

result="UID1">

<cfscript>sleep(15000);</cfscript>

<cfexchangeCalendar

attendees="a@cfadobe.com"

action="getuseravailability"

connection="conn1"

datarequesttype="freebusyandsuggestions"

startDate="#fromDate#"

endDate="#toDate1#"

name="result">

<cfdump var="#result#">

<cfset deleteAllEvents(conn1)>

<cfset deleteAllEvents(conn2)>
The following example shows how you can use the actions getRooms and getRoomList.
action="open"

username = "sample"

password="Password"

server="IP_Address"

serverversion="2010"

connection="conn1">

<cfexchangecalendar action="getroomlist" name="roomList" connection="conn1">

<cfdump var="#roomList#">

<cfexchangecalendar action="getrooms"

emailaddress="groundfloor1@cfadobe.com" name="rooms" connection="conn1">

<cfdump var="#rooms#">

Example 3

Creating and getting an appointment in a secondary calendar using the folderId attribute:
<cfexchangeconnection action="open" connection="conn1" server="<server hostname/IP>" username="<username>" password="<password>" serverversion="2010" protocol="<protocol>" >

<cfscript>
eventStruct = structnew();
eventStruct.AllDayEvent = "yes";
eventStruct.Importance = "low";
eventstruct.RequiredAttendees = "testing@abc.com";
eventstruct.Subject = "Test Message";
eventStruct.StartTime = now();
</cfscript>
<!-- -Get Calendar Folder Id using exchangefolder tag -->
<cfexchangefolder action="GETEXTENDEDINFO" name="familyCalendar" connection="conn1" folderpath="Calendar/family" >
<!--- Must be a calendar folder--->
<cfexchangecalendar action="create" event="#eventStruct#" connection="conn1" result="createdId" folderid="#familyCalendar.uid#">
<cfoutput >
Created Appointment Successfully in the given calendar
</cfoutput>
<!--- getting appointments from the specified calendar using folderId
<cfexchangecalendar action="get" name="familyItems" connection="conn1" folderid="#familyCalendar.uid#">
<cfexchangefilter name="subject" value="Test Message" >
</cfexchangecalendar>
<cfdump var="#familyItems#" >
Creating and getting an appointment in a secondary calendar using the folderpath attribute:
<cfexchangeconnection action="open" connection="conn1" server="<server hostname/IP>" username="<username>" password="<password>" serverversion="2010" protocol="<protocol>" >
 
 <cfscript>
 eventStruct = structnew();
 eventStruct.AllDayEvent = "yes";
 eventStruct.Importance = "low";
 eventstruct.RequiredAttendees = "testing@cfadobe.com";
 eventstruct.Subject = "This is from coldfusion just testing after the test " & rand("CFMX_COMPAT" );
 eventStruct.StartTime = now();
 </cfscript>
 <!--- Default path delimiter is / no need to specify-->
 <cfexchangecalendar action="create" event="#eventStruct#" connection="conn1" result="createdId" folderpath="Calendar/family">
 
 <cfoutput >
 Created Appointment Successfully in the given calendar
 </cfoutput>
 
 <cfexchangecalendar action="get" name="familyItems" connection="conn1" folderpath="Calendar/family" pathDelimiter="/">
 <cfexchangefilter name="subject" value="This is from coldfusion just testing after the test" >
 </cfexchangecalendar>
 
 <cfdump var="#familyItems#" >
Example with username and password
<cfscript>
    eventStruct = structnew();
    eventStruct.AllDayEvent = "yes";
    eventStruct.Importance = "low";
    eventstruct.RequiredAttendees = "user@example.com";
    eventstruct.Subject = "This is any subject " & rand("CFMX_COMPAT" );
    eventStruct.StartTime = now();
</cfscript>

<cfexchangecalendar 
    action="create"
    username ="user1"
    password="password"
    server="exchangeServerIP"
    serverversion="version"
    protocol="protocol" 
    event="eventStruct"
    result="theUID" />

<cfscript>sleep(1000);</cfscript> 

<cfexchangeCalendar action="get" username ="user1"
    password="password"
    server="exchangeServerIP"
    serverversion="version"
    protocol="protocol"  name="getEvent">
        <CFExchangeFilter name="subject" value="calendar">
</cfexchangeCalendar>

<cfset myArray = ArrayNew(1)>
<cfloop query="getEvent">
<cfset temp = ArrayAppend(myArray, "UID")>
</cfloop>
<cfset myList = ArrayToList(myArray, ",")>
<cfset myLen = ListLen(myList)>


<cfoutput query="getEvent">
      <cfif getEvent.subject contains "calendar">
        <cfexchangeCalendar action="delete"
        username ="user1"
    password="password"
    server="exchangeServerIP"
    serverversion="version"
    protocol="protocol" 
        uid="myList">  
       Successful!<br>
      </cfif>  
</cfoutput>

Share this page

Was this page helpful?
We're glad. Tell us how this page helped.
We're sorry. Can you tell us what didn't work for you?
Thank you for your feedback. Your response will help improve this page.

On this page