2013-10-18 3 views
0

아래 일정 코드를 사용하여 Outlook에 일정 이벤트를 보내고 있습니다. 나는 타임 존스의 문제에 직면하고있다. 시작 시간을 오후 8 시로 보내고 있습니다. 그러나, 그것은 다음날의 1.30AM를 놓는다. 아래 코드를 확인하고 TimeZones를 Time과 함께 보낼 수있는 방법을 제안 해주십시오. RFC 5545에서 시간대에 대한 정보가 많이 있습니다PHP를 통해 일정 이벤트에 대한 TimeZone 보내기

 <?php 

    $dtStart = '20131019T131415Z';//yyyymmddThhmmssZ 
    $dtEnd = '20131019T151617Z'; 
    //-------------------- 
    //create text file 
    $ourFileName = "temp_files/calendar.txt"; 
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file1"); 
    fclose($ourFileHandle); 
    // 
    //edit temp file 
    $myFile = "temp_files/calendar.txt"; 
    $fh = fopen($myFile, 'w') or die("can't open file2"); 

    $stringData = " 
    BEGIN:VCALENDAR\n 
    PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN\n 
    VERSION:2.0\n 
    METHOD:REQUEST\n 
    BEGIN:VEVENT\n 
    ORGANIZER:MAILTO:[email protected]\n 
    DTSTAMP:".date('Ymd').'T'.date('His')."\n 
    DTSTART:$dtStart\n 
    DTEND:$dtEnd\n 
    TRANSP:OPAQUE\n 
    SEQUENCE:0\n 
    UID:".date('Ymd').'T'.date('His')."-".rand()."-domain.com\n 
    SUMMARY:do something someware\n 
    DESCRIPTION: This is just a test\n 
    PRIORITY:5\n 
    X-MICROSOFT-CDO-IMPORTANCE:1\n 
    CLASS:PUBLIC\n 
    END:VEVENT\n 
    END:VCALENDAR"; 
    fwrite($fh, $stringData); 
    fclose($fh); 


//email temp file 
$fileatt = "temp_files/calendar.txt"; // Path to the file 
$fileatt_type = "application/octet-stream"; // File Type 
$fileatt_name = "ical.ics"; // Filename that will be used for the file as the attachment 

$email_from = "[email protected]"; // Who the email is from 
$email_subject = "Email test"; // The Subject of the email 
$email_message = "this is a sample message \n\n next line \n\n next line"; // Message that the email has in it 

$email_to = "[email protected]"; // Who the email is too 

$headers = "From: ".$email_from; 

$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
fclose($file); 

$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

$headers .= "\nMIME-Version: 1.0\n" . 
"Content-Type: multipart/mixed;\n" . 
" boundary=\"{$mime_boundary}\""; 

$email_message .= "This is a multi-part message in MIME format.\n\n" . 
"--{$mime_boundary}\n" . 
"Content-Type:text/html; charset=\"iso-8859-1\"\n" . 
"Content-Transfer-Encoding: 7bit\n\n" . 
$email_message . "\n\n"; 

$data = chunk_split(base64_encode($data)); 

$email_message .= "--{$mime_boundary}\n" . 
"Content-Type: {$fileatt_type};\n" . 
" name=\"{$fileatt_name}\"\n" . 
//"Content-Disposition: attachment;\n" . 
//" filename=\"{$fileatt_name}\"\n" . 
"Content-Transfer-Encoding: base64\n\n" . 
$data . "\n\n" . 
"--{$mime_boundary}--\n"; 

$ok = @mail($email_to, $email_subject, $email_message, $headers); 

if($ok) { 

} else { 
die("Sorry but the email could not be sent. Please go back and try again!"); 
} 

?>

+0

가 왜 그냥 시작과 끝 알엇에 시간대 변환을 수행? 그것들은 그리니치 표준시로 전달되므로, 오프셋하는 데 필요한 시간을 더하거나 뺍니다. – Mattt

+0

@mjayt, 답변 해 주셔서 감사합니다. 예, 당신이 말한 것과 똑같이하고 있습니다. 그러나 문제는 올바른 시간에 캘린더 경고가 표시된다는 것입니다. 그러나 이벤트 @ 아웃룩 캘린더의 할당은 다른 시간에. 시간을 자동으로 사용자 시스템 시간으로 변환해야합니다. 아무것도 제안 할 수 있니? – Kishore

+0

이것은 도움이 될 수도 있습니다 http://stackoverflow.com/questions/7626114/ics-timezone-not-working – Mattt

답변

0

.

예 :

DTSTART;TZID=America/New_York:19980119T020000 

DTEND;TZID=America/New_York:19980119T030000 

TZID=America/New_York:19980119T020000 

TZOFFSETFROM:-0500 
TZOFFSETTO:-0400 
TZNAME:EDT 

BEGIN:VTIMEZONE 
TZID:America/New_York 
LAST-MODIFIED:20050809T050000Z 
BEGIN:STANDARD 
DTSTART:20071104T020000 
TZOFFSETFROM:-0400 
TZOFFSETTO:-0500 
TZNAME:EST 
END:STANDARD 
BEGIN:DAYLIGHT 
DTSTART:20070311T020000 
TZOFFSETFROM:-0500 
TZOFFSETTO:-0400 
TZNAME:EDT 
END:DAYLIGHT 
END:VTIMEZONE 
관련 문제