Example / How to create a calendar appointment using Exchange 03 Webdav and PHP?

I tried to figure this out for about two weeks. I can create email items in folders with people, read folders, all this, but for my life I can’t get anything to work with calendars.

I can provide XML examples that I submit to WebDav, but hope someone out there does this and has an example?

+6
php ms-office calendar webdav exchange-server
source share
2 answers

I did this in a Java program several years ago, and the way I did it was to put a VCALENDAR document in a folder. One of the features is that VCALENDAR must be enclosed in RFC822 message. This is a strange combination of WebDAV, email, and iCAL / VCAL, but it worked at the time on Exchange 2003 hosted on Link2Exchange.

I'm sure there is an easier way, but this is what worked for me. Below I show the tcpdump package trace of what happened. You should probably use ngrep / tcpdump for your Outlook / Entourage client to find out what it is doing.

Please note that "Cal2" is the folder name of my test calendar. You must use Calendar for the main calendar folder.

T 10.0.1.95:59741 -> 66.211.136.9:80 [AP] PUT /exchange/yourname.domainname.com/Cal2/CC1.1163646061548.0.eml HTTP/1.1. translate: f. Content-Type: message/rfc822. Pragma: no-cache. Accept: */*. Cache-Control: no-cache. Authorization: Basic NOYOUCANTSEEMYPASSWORDYOUBASTARDS. User-Agent: Jakarta Commons-HttpClient/2.0final. Host: e1.exmx.net. Cookie: sessionid=29486b50-d398-4f76-9604-8421950c7dcd:0x0. Content-Length: 478. Expect: 100-continue. . T 66.211.136.9:80 -> 10.0.1.95:59741 [AP] HTTP/1.1 100 Continue. . T 10.0.1.95:59741 -> 66.211.136.9:80 [AP] content-class: urn:content-classes:appointment. Content-Type: text/calendar;. .method=REQUEST;. .charset="utf-8". Content-Transfer-Encoding: 8bit. . BEGIN:VCALENDAR. BEGIN:VEVENT. UID: E1+1382+1014+495066799@I1 +1382+1014+6+495066799. SUMMARY:Voice Architecture Leads Meeting. PRIORITY:5. LOCATION:x44444 pc:6879. DTSTART:20061122T193000Z. DTEND:20061122T203000Z. DTSTAMP:20061110T074856Z. DESCRIPTION:this is a description. SUMMARY:this is a summary. END:VEVENT. END:VCALENDAR. T 66.211.136.9:80 -> 10.0.1.95:59741 [AP] HTTP/1.1 201 Created. Date: Thu, 16 Nov 2006 03:00:16 GMT. Server: Microsoft-IIS/6.0. X-Powered-By: ASP.NET. MS-Exchange-Permanent-URL: http://e1.exmx.net/exchange/yourname.yourdomain.com/-FlatUrlSpace-/122cda661de1da48936f9 44bda4dde6e-3af8a8/122cda661de1da48936f944bda4dde6e-3f3383. Location: http://e1.exmx.net/exchange/yourname.yourdomain.com/Cal2/CC1.1163646061548.0.eml. Repl-UID: <rid:122cda661de1da48936f944bda4dde6e0000003f3383>. Content-Type: text/html. Content-Length: 110. Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, SUBSCRIBE, UNSUBSCRIBE, PO LL, BDELETE, BCOPY, BMOVE, BPROPPATCH, BPROPFIND, LOCK, UNLOCK. ResourceTag: <rt:122cda661de1da48936f944bda4dde6e0000003f3383122cda661de1da48936f944bda4dde6e0000003f4671>. GetETag: "122cda661de1da48936f944bda4dde6e0000003f4671". MS-WebStorage: 6.5.7638. Cache-Control: no-cache. 

.

 T 66.211.136.9:80 -> 10.0.1.95:59741 [AP] <body><h1>/exchange/yourname.yourdomain.com/Cal2/CC1.1163646061548.0.eml was created successfully</h1></body>. 

You can verify that it worked using something like Cadaver to request object properties via WebDAV as follows:

 dav:/exchange/ yourname@yourdomain.com /Cal2/> propget CC1.1163646061548.0.eml Fetching properties for `CC1.1163646061548.0.eml': textdescription = this is a description contentclass = urn:content-classes:appointment supportedlock = <lockentry><locktype><transaction><groupoperation></groupoperation></transaction></locktype><locks cope><local></local></lockscope></lockentry> permanenturl = http://e1.exmx.net/exchange/ yourname@yourdomain.com /-FlatUrlSpace-/122cda661de1da48936f944bda4dde6e- 3af8a8/122cda661de1da48936f944bda4dde6e-3f3383 getcontenttype = message/rfc822 id = AQEAAAAAOvioAQAAAAA/M4MAAAAA mid = -8992774761696198655 uid = E1+1382+1014+495066799@I1 +1382+1014+6+495066799 isfolder = 0 resourcetype = method = PUBLISH getetag = "122cda661de1da48936f944bda4dde6e0000003f4671" lockdiscovery = outlookmessageclass = IPM.Appointment creationdate = 2006-11-16T03:00:16.549Z outlookmessageclass = IPM.Appointment creationdate = 2006-11-16T03:00:16.549Z ntsecuritydescriptor = CAAEAAAAAAABAC+MMAAAAEwAAAAAAAAAFAAAAAIAHAABAAAAARAUAL8PHwABAQAAAAAABQcAAAABBQAAAAAABRUAAAC nkePD6LEa8iIT/+gqDAAAAQUAAAAAAAUVAAAAp5Hjw+ixGvIiE//oAQIAAA== dtstamp = 2006-11-10T07:48:56.000Z lastmodified = 2006-11-16T03:00:16.565Z dtstart = 2006-11-22T19:30:00.000Z location = x44444 pc:6879 duration = 3600 htmldescription = <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1"> <TITLE>this is a summary</TITLE> </HEAD> <BODY> <!-- Converted from text/plain format --> <P><FONT SIZE=2>this is a description</FONT> </P> </BODY> </HTML> ishidden = 0 parentname = http://e1.exmx.net/exchange/ yourname@yourdomain.com /Cal2/ meetingstatus = TENTATIVE subject = this is a summary getcontentlength = 631 normalizedsubject = this is a summary isstructureddocument = 0 repl-uid = rid:122cda661de1da48936f944bda4dde6e0000003f3383 timezoneid = 0 displayname = CC1.1163646061548.0.eml href = http://e1.exmx.net/exchange/ yourname@yourdomain.com /Cal2/CC1.1163646061548.0.eml nomodifyexceptions = 1 patternend = 2006-11-22T20:30:00.000Z isreadonly = 0 instancetype = 0 uid = AQEAAAAAPzODAAAAAAAAAAAAAAAA getlastmodified = 2006-11-16T03:00:16.565Z created = 2006-11-16T03:00:16.549Z sensitivity = 0 dtend = 2006-11-22T20:30:00.000Z hasattachment = 0 iscollection = 0 read = 1 resourcetag = rt:122cda661de1da48936f944bda4dde6e0000003f3383122cda661de1da48936f944bda4dde6e0000003f4671 patternstart = 2006-11-22T19:30:00.000Z priority = 0 sequence = 0 
+2
source share
0
source share

All Articles