Есть ли стандарт и реализация для Icalendar события RSVP - PullRequest
2 голосов
/ 13 декабря 2010

Суть в том, что я сейчас внедряю систему подтверждения событий и не могу найти правильный формат ответов ICalendar. Поэтому мне интересно, есть ли пример полного сообщения REPLY и, возможно, библиотеки PHP, которая бы обернула все это?

Теперь для получения подробной информации, мы получаем внешние электронные письма, включая приглашения на мероприятия с просьбой о RSVP. Вот выдержка из файла iCal:

ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="'user@company.com'":MAILTO:user@company.com ORGANIZER;CN="Organ Izer":MAILTO:organizer@company.com

Я не смог найти стандарт ответа для отправки RSVP организатору. В RFC 2447 упоминаются параметры «ATTSTAT» и «PARTSTAT».

При попытке отправить следующее сообщение в календарь Google событие не обновляется.

$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:abcdef@gmail.com
UID:oc7ae7537999onscsivg8km123@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=CONFIRMED;RSVP=
 TRUE;CN=jc@company.se;X-NUM-GUESTS=0:mailto:jc@company.se
LOCATION:
SEQUENCE:1
END:VEVENT
END:VCALENDAR';

mail('abcdef@gmail.com', 'Accepted:', "Event accepted", $headers);

Что-то не так с сообщением Икала или с самим методом? Это способ отправки ответов на событие?

Ответы [ 2 ]

5 голосов
/ 14 декабря 2010

Следующий код будет работать с календарем Google.Вложение обрабатывается Gmail, и прием каскадно к событию.

$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:example@gmail.com
UID:u2coh5g3bppo2d2o3t@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;
 CN=user@example.se:mailto:user@example.se
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('example@gmail.com', 'Jean-Charles');
$mail->Body = "HTML BODY";
$mail->AltBody = "Text body";
$mail->Subject = "Email title";
$mail->Sender = "User Name";
$mail->FromName = "user@example.se";
$mail->AddStringAttachment($vcal, 'meeting.ics', "base64", "text/calendar");
$mail->Send();

Важные биты

  • Тип содержимого: текст / календарь
  • МЕТОД: REPLY
  • PARTSTAT: ПРИНЯТО | ОТКЛОНЕН
  • UID

Я не уверен, что необходимо отправлять обратно всю избыточную информацию (описание, сводка, dtend,dtstart)

0 голосов
/ 01 ноября 2013

У меня сработало следующее решение:

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

Этот метод не прикрепляет ical формат.

...