• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2487
  • Last Modified:

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

0
jaypappas
Asked:
jaypappas
1 Solution
 
jaypappasAuthor Commented:
Ha! I'm answering my own question.... (how does that work? :) ).

The answer is:

Adding this:
strMiscInfo = "<e:keywords-utf8><x:v>Buddies</x:v><x:v>Engineers</x:v></e:keywords-utf8>"
Then in the proppatch call add the new string (see below):

' 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>" & _
   
strMiscInfo & _
   strMailInfo & _
    strCalInfo & _
    strHeaderInfo & _
    "<mapi:finvited dt:dt=""boolean"">1</mapi:finvited>" & _
   "</g:prop></g:set>" & _
   
 "</g:propertyupdate>"

This assigns categories quite nicely.... it was in some webdav code for entering contacts and I played with it....
 


 
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Creating Active Directory Users from a Text File

If your organization has a need to mass-create AD user accounts, watch this video to see how its done without the need for scripting or other unnecessary complexities.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now