ColdFusion features a tag that can be used to access and manipulate Microsoft Exchange calendar data, contacts, and more. This tag was introduced in ColdFusion 8, and supports the versions of Exchange available back then. The tag does not support Exchange 2010, much to the dismay of many users. And while I can’t provide dates yet, I can confirm that the next version of ColdFusion will indeed update so that it supports Exchange 2010.

8 thoughts

  1. Not to sound like a smart ass, but will this be released about the same time as the next version of Exchange? It would be nice if this could be an update to CF9.

  2. You know I can’t answer that. 🙂 I realize that my post is next to useless without a date attached, but a couple of users asked, so wanted to share what I could. And yes, I do agree that this ship be made available before the next major update to CF.
    — Ben

  3. All the tags working fine with Exchange server 2010 using CF 8 except the getAttachments when attachmentPath attribute is set. The Coldfusion update 1 listed issue# 69520("You could not retrieve calendar event attachments from Exchange 2007 servers using the attachmentPath attribute. You would get an Exchange error Code 501") as fixed. Is it only for Exchange 2007?
    Thanks

  4. Well the news out of cfObjective is promising and makes my comment irrelevant (as if were relevant to begin with). Thanks for the info.

  5. Hi,
    Yes there is a way to work with CF 9 and Exchange 2010 and it might work with CF8 also.
    In december 2010 te EWS API was released.
    http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx
    Since I needed to connect to Exchange I started to fiddle with it and in the end it is very simple.
    You need to download EWSJavaAPI_1.1.4 from
    http://archive.msdn.microsoft.com/ewsjavaapi/Release/ProjectReleases.aspx?ReleaseId=5691
    In the getting started for the API you’ll be told to include 4 additional libraries to make things work but as we figured out you only need to also add JCIFS.
    I’m lazy so I place both libraries in the LIB with all the Jars.
    If you have done this the following should work:

    <!— 1. I need an instance of the ExchangeService class —>
    <cfobject type="Java" class="microsoft.exchange.webservices.data.ExchangeService" name="service">
    <cfset service.init()>
    <!— 2. I need to set the credentials —>
    <!— 2a. Create an instance of the WebCredentials class —>
    <cfobject type="Java" class="microsoft.exchange.webservices.data.WebCredentials" name="credentials">
    <!— 2b. Set the credentials —>
    <cfset returnValue = credentials.init("test.account","password", "yourdomain")>
    <!— 3. Set the credentials in the service object —>
    <cfset returnValue = service.setCredentials(credentials) />
    <cfset returnvalue = service.getCredentials() />
    <!— 4. Create an instance of the Uri class —>
    <cfobject type="Java" class="java.net.URI" name="uri">
    <cfdump var="#uri#" />
    <cfset returnValue = uri.init("https://yourserver/ews/Exchange.asmx&quot;)>
    <cfset returnValue = service.setUrl(uri) />
    <!– TestMessage —>
    <cfobject type="Java" action="create" class="microsoft.exchange.webservices.data.EmailMessage" name="message">
    <cfset message = message.init(service) />
    <cfdump var="#message#">
    <cfset message.SetSubject("EWSTest")>
    <cfset messageBody = CreateObject("java", "microsoft.exchange.webservices.data.MessageBody")>
    <cfset messageBody.init("TestMessage")>
    <cfset message.SetBody( messageBody )>
    <cfset message.ToRecipients.Add("yourname@yourdomain.nu") >
    <cfoutput>
    #message.SendAndSaveCopy()#
    </cfoutput>

    If this works you can figure out the rest from the java api doc

  6. By any chance are there plans for Adobe to implement the BusyStatus property of the appointments? I am not able to se that flag utilizing cfexchangecalendar tag as it states it is an invalid property but the Microsoft description of the Appointment Calendar object clearly states it is a property. This is the property that shows whether or not an appointment is busy/free/tentative or Out of Office.

Leave a Reply