2010-12-13 1 views
2

요약하면 지금 이벤트 확인 시스템을 구현 중이며 ICalendar 응답에 적합한 형식을 찾을 수 없습니다. 따라서 완전한 REPLY 메시지와 PHP 라이브러리를 모두 포함하고있는 예제가 있는지 궁금합니다.Icalendar 이벤트 RSVP에 대한 표준 및 구현이 있습니까

자세한 내용은 RSVP를 요청하는 이벤트 초대장을 포함한 외부 이메일을 수신합니다. 내가 주최자에 RSVP를 보내 응답 표준을 찾을 수 없습니다

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

다음은 iCal의 파일의 발췌 한 것입니다. 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

다음 코드는 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:[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(); 

중요한 비트는

  • 콘텐츠 유형 : 텍스트/달력
  • 방법 : REPLY
  • PARTSTAT : ACCEPTED |

내가 UID

  • 감소 모든 중복 정보를 되돌려 보낼 필요가 있는지 확신하지 못합니다 (des cription, 요약, DTEND, DTSTART)

  • 0

    다음 솔루션은 나를 위해 일한 :

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

    이 방법은 iCal의 포맷을 추가하지 않습니다.