1

PHP コードを使用してカレンダー リクエスト メールを送信しようとしています。カレンダーと一緒にメールが届きました。しかし、開始日に問題があります。湾岸標準時に従って開始日を設定する方法。どこにも言及していませんが、今はGMTに従っています。つまり、午前 7 時にリクエストを送信すると、開始日は午前 11 時に表示されます。私のコードは次のようなものです:

$dtstart = $start_date_conf;

$dtend=$end_date_conf;

$todaystamp = date("Ymd\THis\Z");

//Create unique identifier
$cal_uid = date('Ymd').'T'.date('His')."-".rand()."@fugenx.com";

//Create Mime Boundry
$mime_boundary = "----Bespot 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 .= "--$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>'.$messagess.'</p>';
$message .= '<p></p><p></p>';
$message .= '<p><b>Thanks & Regards,:</b></p>';
$message .= '<p>'.$full_name.'</p>';
$message .= '<p>'.$full_address.'</p>';
$message .= '<p>'.$email_address.'</p>';
$message .= '<p>'.$mobile_number.'</p>';

$message .= "</body>\n";
$message .= "</html>\n";
$message .= "--$mime_boundary\n";

//Create ICAL Content (Google rfc 2445 for details and examples of usage) 
$ical =    "BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ORGANIZER:MAILTO:".$from_address."
DTSTART:".$dtstart."
DTEND:".$dtend."
LOCATION:".$meeting_location."
TRANSP:OPAQUE
SEQUENCE:0
UID:".$cal_uid."
DTSTAMP:".$todaystamp."
DESCRIPTION:".$meeting_description."
SUMMARY:".$subject."
PRIORITY:5
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR";   


$message .= "Content-Type: text/calendar;method=REQUEST;charset=utf-8\n";

//$message .= "Content-Type: text/calendar;name=\"meeting.ics\";method=REQUEST\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $ical;            

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

1 に答える 1

1

RFC5545を参照してください。TZIDを参照するには、vtimezoneコンポーネントを追加する必要があります。

パラメーター名: TZID

このパラメーターは、DATE-TIMEまたはTIME値タイプが指定され、値がUTCまたは「フローティング」時間。iCalendarオブジェクトにVTIMEZONE定義を含めて従わないと、特定の場所での現地時間の理解に一貫性がなくなる可能性があります。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
METHOD:REQUEST
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Asia/Qatar
BEGIN:STANDARD
DTSTART:20081102T090000
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:CST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER:MAILTO:mailto@organiser.net
DTSTART;TZID=Asia/Qatar:20130104T090000
DTEND;TZID=Asia/Qatar:20130104T100000
LOCATION:meeting_location
TRANSP:OPAQUE
SEQUENCE:0
UID:cal_uid
DTSTAMP:20130104T224617Z
DESCRIPTION:meeting_description
SUMMARY:subject
PRIORITY:5
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR
于 2013-01-04T20:56:16.117 に答える