2010-12-13 6 views
2

Die Zusammenfassung ist, dass ich jetzt ein Ereignisbestätigungssystem implementiere und nicht das richtige Format für die ICalendar Antworten finden kann. Daher frage ich mich, ob es da draußen ein Beispiel für eine vollständige REPLY-Nachricht und vielleicht eine PHP-Bibliothek gibt, die alles umschließt?Gibt es einen Standard und eine Implementierung für Icalender Ereignis RSVP

Jetzt für die Details erhalten wir externe E-Mails, einschließlich Einladungen zu Veranstaltungen für RSVP. Hier ist ein Auszug aus der iCal-Datei:

ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="'[email protected]'":MAILTO:[email protected] ORGANIZER;CN="Organ Izer":MAILTO:[email protected]

Ich konnte nicht die Antwort Standard finden die RSVP an den Veranstalter zu senden. Die RFC 2447 erwähnt "ATTSTAT" und "PARTSTAT" -Parameter.

Wenn Sie versuchen, die folgende Nachricht an Google Kalender zu senden, wird das Ereignis nicht aktualisiert.

$headers = "Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;\r\n"; 
$headers .= "Content-Type: text/plain;charset=\"utf-8\"\r\n"; 
$headers .= 'BEGIN:VCALENDAR 
VERSION:2.0 
METHOD:REPLY 
BEGIN:VEVENT 
ORGANIZER;CN=JCharles:mailto:[email protected] 
UID:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=CONFIRMED;RSVP= 
TRUE;[email protected];X-NUM-GUESTS=0:mailto:[email protected] 
LOCATION: 
SEQUENCE:1 
END:VEVENT 
END:VCALENDAR'; 

mail('[email protected]', 'Accepted:', "Event accepted", $headers); 

Ist etwas falsch mit der Ical-Nachricht oder mit der Methode an sich? Ist das die Art, wie die Event-Antworten gesendet werden sollen?

Antwort

5

Der folgende Code funktioniert mit Google Kalender. Der Anhang wird von Google Mail verarbeitet und die Annahme wird an das Ereignis kaskadiert.

$vcal = 'BEGIN:VCALENDAR 
PRODID:-//EXAMPLE.NU//SE 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REPLY 
BEGIN:VEVENT 
DTSTART:20101215T160000Z 
DTEND:20101215T170000Z 
DTSTAMP:'.date('Ymd\THis\Z').' 
ORGANIZER;CN=Jean-Charles:mailto:[email protected] 
UID:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED; 
[email protected]:mailto:[email protected] 
CREATED:19000101T120000Z 
DESCRIPTION:äåóö 
LAST-MODIFIED:'.date('Ymd\THis\Z').' 
LOCATION: 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY:a new test 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR 
'; 

$vcal = utf8_encode($vcal); 

require('lib/phpmailer/class.phpmailer.php'); 
$mail = new PHPMailer(); 
$mail->AddAddress('[email protected]', 'Jean-Charles'); 
$mail->Body = "HTML BODY"; 
$mail->AltBody = "Text body"; 
$mail->Subject = "Email title"; 
$mail->Sender = "User Name"; 
$mail->FromName = "[email protected]"; 
$mail->AddStringAttachment($vcal, 'meeting.ics', "base64", "text/calendar"); 
$mail->Send(); 

Die wichtigen Bits sind

  • Content-type: text/calendar
  • METHODE: ANTWORTEN
  • PARTSTAT: AKZEPTIERT | DECLINED
  • UID

Ich bin nicht sicher, dass es notwendig ist, alle redundanten Informationen zurückzusenden (des cription, Zusammenfassung, DTEND, dtstart)

0

Die folgende Lösung für mich gearbeitet:

$mail->Subject = $name; 
$mail->Body = $description; 
$mail->AltBody = $body; // ical format 
$mail->Ical = $message; // ical format 

Diese Methoden legen nicht die ische Format.