views:

3172

answers:

2

I've been trying to figure this out for about two weeks. I'm able to create email items in people's folders, read the folders, all that stuff but for the life of me I can not get anything to work with the calendars.

I can provide examples of the XML I'm sending to WebDav but hoping someone out there has done this and has an example?

+1  A: 

I did this in a Java program a few years back, and the way I did it was to PUT a VCALENDAR document into the folder. One quirk is that the VCALENDAR had to be enclosed within an RFC822 message. It's a bizarre combination of WebDAV, email, and iCAL/VCAL, but it worked at the time on Exchange 2003 hosted at Link2Exchange.

I'm sure there is an easier way, but this is what worked for me. Below I show a tcpdump packet trace of what happened. You should probably use ngrep/tcpdump on your own Outlook/Entourage client to see what it does.

Note that "Cal2" is the name of my test calendar folder. You'd 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 query the object's properties via WebDAV like so:

dav:/exchange/[email protected]/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/[email protected]/-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/[email protected]/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/[email protected]/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
Robert Sanders
A: 

Hi, have a look at this http://golemlab.wordpress.com/2009/09/13/php-owa-2003-calendar-fun/

golemwashere