Link to home
Start Free TrialLog in
Avatar of jaypappas
jaypappas

asked on

WEBDAV - MS Exchange - Adding Calendar Appointment WITH ASSIGNED CATEGORY

I'm trying to create limited integration between our "home grown" CRM system and our Exchange Server.  I have code that's working, however I cannot figure out how to pass a CATEGORY value in my code.  Can someone give me the line of code I need to pass the category value?

The code below currently creates a calendar appointment but does not create a category on the appointment.
<html>
<body>
<%
 
 ' Exchange server name.
 strExchSvrName = "xxx"
 
 ' Mailbox folder name.
 strMailbox = "yyy"
 
 
 ' Appointment item.
 strApptItem = trim(year(date)) & "-" & trim(month(date)) & "-" & trim(day(date)) & "-" & trim(hour(now)) & trim(minute(now)) & trim(second(now))
 
 ' Username and password of appointment creator.
 strUserName = "123123"
 strPassWord = "xxxxx"
 
 ' URL of the appointment item.
 strApptURL = "http://" & strExchSvrName & "/exchange/" & _
    strMailbox & "/Calendar/" & strApptItem
 
 ' XML namespace info of the WebDAV request.
 strXMLNSInfo = "xmlns:g=""DAV:"" " & _
    "xmlns:e=""http://schemas.microsoft.com/exchange/"" " & _
    "xmlns:mapi=""http://schemas.microsoft.com/mapi/"" " & _
    "xmlns:mapit=""http://schemas.microsoft.com/mapi/proptag/"" " & _
    "xmlns:x=""xml:"" xmlns:cal=""urn:schemas:calendar:"" " & _
    "xmlns:dt=""urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"" " & _
    "xmlns:header=""urn:schemas:mailheader:"" " & _
    "xmlns:mail=""urn:schemas:httpmail:"">"
 
 ' Set the appointment item properties.  The reminder time is set in seconds.
 ' To create an all-day meeting, set the dtstart/dtend range for 24 hours
 ' or more and set the alldayevent property to 1.  See the documentation
 ' on the properties in the urn:schemas:calendar: namespace for more information.
 
 'Eastern Standard Time Offset = 5 hours
 strCalInfo = "<cal:location>test location 21</cal:location>" & _
    "<cal:dtstart dt:dt=""dateTime.tz"">2008-11-18T20:50:00.000Z</cal:dtstart>" & _
    "<cal:dtend dt:dt=""dateTime.tz"">2008-11-18T20:50:00.000Z</cal:dtend>" & _
    "<cal:instancetype dt:dt=""int"">0</cal:instancetype>" & _
    "<cal:busystatus>BUSY</cal:busystatus>" & _
    "<cal:meetingstatus>CONFIRMED</cal:meetingstatus>" & _
    "<cal:alldayevent dt:dt=""boolean"">0</cal:alldayevent>" & _
    "<cal:responserequested dt:dt=""boolean"">0</cal:responserequested>" & _
    "<cal:reminderoffset dt:dt=""int"">900</cal:reminderoffset>"
 
 
    
    
 ' Set the required attendee of the appointment.
  strHeaderInfo = "<header:to>" & strMailbox & "</header:to>"
 
 ' Set the subject of the appointment.
 strMailInfo = "<mail:subject>New Calendar Appointment Test</mail:subject>" & _
    "<mail:htmldescription>This is a test description</mail:htmldescription>"
 
 ' Build the XML body of the PROPPATCH request.
 strApptRequest = "<?xml version=""1.0""?>" & _
 "<g:propertyupdate " & strXMLNSInfo & _
  "<g:set><g:prop>" & _
    "<g:contentclass>urn:content-classes:appointment</g:contentclass>" & _
    "<e:outlookmessageclass>IPM.Appointment</e:outlookmessageclass>" & _
    strMailInfo & _
    strCalInfo & _
    strHeaderInfo & _
 
    "<mapi:finvited dt:dt=""boolean"">1</mapi:finvited>" & _
   "</g:prop></g:set>" & _
   
 "</g:propertyupdate>" 
 
 
 
 
 ' Create the DAV PROPPATCH request.
 Set xmlReq = CreateObject("Microsoft.XMLHTTP")
 xmlReq.open "PROPPATCH", strApptURL, False, strUserName, strPassWord
 xmlReq.setRequestHeader "Content-Type", "text/xml"
 xmlReq.send strApptRequest
 
 ' The PROPPATCH request was successful.
 If (xmlReq.Status >= 200 And xmlReq.Status < 300) Then
  response.write "Appointment created successfully."
 
 ' Display error info.
 Else
 
  response.write "PROPPATCH status: " & xmlReq.Status & vbCrLf & _
    "Status text: " & xmlReq.statusText
 End If
 
' Clean up.
Set xmlReq = Nothing
 
 
 
    Set xmlReq = Nothing
 
 
 
 
 
 
%>
</body>
</html>

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of jaypappas
jaypappas

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial