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条)

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看