2010-12-13 26 views
2

總結是我現在正在實現事件確認系統,並且找不到ICalendar回覆的正確格式。因此,我想知道是否有一個完整的REPLY消息的例子,也許是一個可以包裝它的PHP庫?Icalendar事件是否存在標準和實現RSVP

現在瞭解詳情,我們會收到外部電子郵件,其中包括要求參加活動邀請的RSVP。這裏是的iCal文件的摘錄:

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

我找不到回覆標準的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:[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); 

Ical消息或方法本身有什麼問題嗎?這是事件回覆應該發送的方式嗎?

回答

5

以下代碼將與谷歌日曆一起使用。該附件由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:[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(); 

重要的位是

  • 內容類型:文本/日曆
  • 方法:回覆
  • PARTSTAT:受理| DECLINED
  • UID

我不確定是否有必要發回所有冗餘信息(des cription,總結,DTEND,爲dtstart)

0

以下解決方案爲我工作:

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

此方法並不重視iCal格式。

相關問題