Пример / Как-создать календарь с использованием Exchange 03 Webdav и PHP? - PullRequest
6 голосов
/ 18 сентября 2008

Я пытался понять это около двух недель. Я могу создавать элементы электронной почты в папках людей, читать папки и все такое, но ради жизни я не могу заставить что-либо работать с календарями.

Я могу привести примеры XML, который я отправляю в WebDav, но надеюсь, что кто-то там сделал это и имеет пример?

Ответы [ 2 ]

2 голосов
/ 18 сентября 2008

Я сделал это в программе на Java несколько лет назад, и я сделал так, чтобы поместить документ VCALENDAR в папку. Одна из странностей заключается в том, что VCALENDAR должен быть заключен в сообщение RFC822. Это причудливая комбинация WebDAV, электронной почты и iCAL / VCAL, но в то время она работала на Exchange 2003, размещенном на Link2Exchange.

Я уверен, что есть более простой способ, но это то, что сработало для меня. Ниже я показываю трассировку пакета tcpdump того, что произошло. Вам, вероятно, следует использовать ngrep / tcpdump на вашем собственном клиенте Outlook / Entourage, чтобы посмотреть, что он делает.

Обратите внимание, что "Cal2" - это имя моей папки с тестовым календарем. Вы бы использовали «Календарь» для основной папки календаря.

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>.

Вы можете убедиться, что он работал, используя что-то вроде Cadaver для запроса свойств объекта через WebDAV, например:

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
0 голосов
/ 13 сентября 2009
...