2015-01-13 3 views
1

아래 코드를 시도했습니다. &은 하나의 임베디드 ics에서 여러 이벤트를 Google 캘린더에 보낼 수있었습니다. 그러나 MS Outlook 2010에서 동일한 메일을 열면 첫 번째 날짜이 Outlook 일정에 표시됩니다.PHP는 하나의 이메일에서 여러 개의 이벤트 요청을 Outlook으로 보냅니다.

아래 코드는 제 코드입니다. 나는 MS 아웃룩 2010에 .ics 인 파일 & 수입에 iCal의 내용을 복사 할 경우,이 두 가지 이벤트가 성공적으로 업데이트되는 것을

<?php 
$ical4 = 'BEGIN:VCALENDAR 
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:20150310T183001Z 
DTEND:20150310T182959Z 
DTSTAMP:20150310T183000Z 
UID:[email protected] 
ORGANIZER:MAILTO:[email protected] 
ATTENDEE:MAILTO:[email protected] 
DESCRIPTION:Test E1 Desc 
STATUS:CONFIRMED 
SEQUENCE:0 
SUMMARY:Test E1 
TRANSP:OPAQUE 
END:VEVENT 
BEGIN:VEVENT 
DTSTART:20150311T183001Z 
DTEND:20150311T182959Z 
DTSTAMP:20150310T183000Z 
UID:[email protected] 
ORGANIZER:MAILTO:[email protected] 
ATTENDEE:MAILTO:[email protected] 
DESCRIPTION:Test E2 Desc 
STATUS:CONFIRMED 
SEQUENCE:0 
SUMMARY:Test E2 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR'; 


$from_name = "My Name"; 
    $from_address = "[email protected]"; 
    $subject = "Test Events_1"; 

//Create Mime Boundry 
    $mime_boundary = "----Meeting Booking----".md5(time()); 

    //Create Email Headers 
    $headers = "From: ".$from_name." <".$from_address.">\n"; 
    $headers .= "Reply-To: ".$from_name." <".$from_address.">\n"; 

    $headers .= "MIME-Version: 1.0\n"; 
    $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n"; 
    $headers .= "Content-class: urn:content-classes:calendarmessage\n"; 

    //Create Email Body (HTML) 
    $message = ""; 
    $message .= "--$mime_boundary\n"; 
    $message .= "Content-Type: text/html; charset=UTF-8\n"; 
    $message .= "Content-Transfer-Encoding: 8bit\n\n"; 

    $message .= "<html>\n"; 
    $message .= "<body>\n"; 
    $message .= '<p>Dear user,</p>'; 
    $message .= '<p>Here is my HTML Email/Used for Meeting Description</p>';  
    $message .= "</body>\n"; 
    $message .= "</html>\n"; 
    $message .= "--$mime_boundary\n"; 

$message .= 'Content-Type: text/calendar; name="meeting.ics";method=REQUEST; charset=utf-8\n'; 
$message .= 'Content-Disposition: inline;\n'; 
    $message .= "Content-Transfer-Encoding: 2048bit\n\n"; 
    $message .= $ical4; 

    //SEND MAIL 
    $mail_sent = @mail($email, $subject, $message, $headers); 

    if($mail_sent)  { 
     return true; 
    } else { 
     return false; 
    } 

참고. 하지만, 나는 PHP를 사용하여 메일을 보내 Outlook 캘린더를 자동으로 업데이트해야합니다.

하나의 이메일에서 여러 이벤트를 MS Outlook 2010으로 보내어 Outlook 일정에 자동으로 추가 할 수있는 방법이 있습니까?

답변

0

기본적으로 이는 작동하지 않습니다. iMip 메시지는 1 개의 이벤트 만 갖는 경향이 있습니다.

그러나이 문제를 해결하는 한 가지 방법은 두 개의 인스턴스가있는 반복 일정으로 전환하는 것입니다.

이렇게하려면 UID이 두 메시지에서 동일하고 메시지 중 하나에 RECURRENCE-ID이 있어야합니다. 초기 (마스터 이벤트)는 이벤트를 되풀이하기 위해 RDATE 또는 RRULE 중 하나가되어야하며 두 번째 이벤트는 재정의 된 인스턴스로 작동합니다.

모든 클라이언트에서 RDATE이 얼마나 잘 작동하는지 모르겠지만 Outlook 2010에서 지원하는지 잘 모르겠습니다. 나는 RRULE이 널리 지원된다는 것을 알고있다.

+0

고맙습니다 &이 솔루션이 작동합니다. 그러나 나는 또 다른 설명이 필요하다. 이벤트가 반복 이벤트로 보내지면 두 번째 메일을 통해 반복되는 각 이벤트를 다른 세부 정보로 업데이트해야합니다. 예 : 반복 일정에는 4 일이 소요됩니다. 다음 이메일에서 첫 번째 이벤트 요약을 "E1 승인 및 통과"로, 두 번째 이벤트 요약을 "E2 거부"로, 세 번째 이벤트는 변경하지 않고 네 번째 이벤트는 취소해야합니다. 이 작업을 수행 할 수 있습니까? 그렇다면 어떻게? 나는 SEQUENCE를 증가 시키려고 노력했지만 그것은 나를 위해 작동하지 않았다. 이 코드 예제를 제공 할 수 있다면 많은 점을 이해할 수 있습니다. – Emma

+0

또 다른 문제는 이벤트가 기본적으로 추가되지 않는다는 것입니다. 전자 메일 제목을 두 번 클릭해야만 이벤트가 Outlook 일정에 추가됩니다. 이것에 대한 해결책이 있습니까? – Emma

관련 문제