2010-12-13 49 views
2

Le résumé est que je suis en train de mettre en œuvre un système de confirmation d'événement et que je ne trouve pas le bon format pour les réponses ICalendar. Par conséquent, je me demande s'il existe un exemple de message REPLY complet et peut-être une bibliothèque PHP qui envelopperait tout? Maintenant, pour les détails, nous recevons des courriels externes, y compris des invitations à des événements demandant RSVP. Voici un extrait du fichier iCal:Existe-t-il une norme et une implémentation pour l'événement Icalendar? RSVP

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

Je ne pouvais pas trouver la réponse standard pour envoyer le RSVP à l'organisateur. Le RFC 2447 mentionne le paramètre "ATTSTAT" et "PARTSTAT".

En essayant d'envoyer le message suivant au calendrier Google, l'événement n'est pas mis à jour.

$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); 

Y at-il un problème avec le message Ical ou avec la méthode en elle-même? Est-ce la façon dont les réponses à l'événement sont censées être envoyées?

Répondre

5

Le code suivant fonctionnera avec google calendar. La pièce jointe est traitée par Gmail et l'acceptation est répercutée en cascade sur l'événement.

$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(); 

Les bits importants sont

  • Content-Type: text/calendar
  • MÉTHODE: REPONDRE
  • PARTSTAT: CONFIRME | REFUSÉ
  • UID

Je suis pas sûr qu'il soit nécessaire de renvoyer toutes les informations redondantes cription, résumé, dtend, dtstart)

0

La solution suivante a fonctionné pour moi:

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

Cette méthode ne se fixe pas le format ical.