dongwen4487 2010-12-13 16:24
浏览 180
已采纳

是否存在Icalendar事件RSVP的标准和实现

The summary is that I am now implementing an event confirmation system and can't find the right format for the ICalendar replies. Therefore I wonder if there is an example out there of complete REPLY message and maybe a PHP library that would wrap it all?

Now for the details, we get external emails including event invitations asking for RSVP. Here is an excerpt of the iCal file:

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

I couldn't find the reply standard to send the RSVP to the organizer. The RFC 2447 mentions "ATTSTAT" and "PARTSTAT" parameter.

By trying to mail the following message to Google calendar the event is not being updated.

$headers = "Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;
";
$headers .= "Content-Type: text/plain;charset=\"utf-8\"
";
$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);

Is there anything wrong with the Ical message or with the method in itself? Is this the way the event replies are supposed to be sent?

  • 写回答

2条回答 默认 最新

  • duanshan1511 2010-12-14 10:34
    关注

    The following code will work with google calendar. The attachment is processed by gmail and acceptance is cascaded to the event.

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

    The important bits are

    • Content-type : text/calendar
    • METHOD:REPLY
    • PARTSTAT:ACCEPTED|DECLINED
    • UID

    I am not sure that it is necessary to send back all redundant information (description, summary, dtend, dtstart)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!