Zrobiłem to w programie Java kilka lat temu, a sposób w jaki to zrobiłem polegał na umieszczeniu dokumentu VCALENDAR w folderze. Jednym dziwactwem jest to, że VCALENDAR musiał być zamknięty w komunikacie RFC822. To dziwne połączenie WebDAV, e-mail i iCAL/VCAL, ale działało w tym czasie na Exchange 2003 hostowanym w Link2Exchange.
Jestem pewien, że jest łatwiejszy sposób, ale to właśnie dla mnie zadziałało. Poniżej pokazuję ślad pakietu tcpdump, co się stało. Powinieneś prawdopodobnie użyć polecenia ngrep/tcpdump na swoim kliencie Outlook/Entourage, aby zobaczyć, co robi.
Należy pamiętać, że "Cal2" to nazwa mojego folderu z kalendarzem testowym. W głównym folderze kalendarza możesz użyć "Kalendarza".
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:[email protected]+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>.
Można sprawdzić, czy to zadziałało, używając coś podobnego Cadaver kwerendy właściwości obiektu przy użyciu protokołu WebDAV tak:
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 = [email protected]+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