У меня есть функция в API моего приложения, которая может отправлять запрос календаря Outlook.
Вот код, который строит отправленное письмо:
$headers = 'Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;\r\n';
$message = "BEGIN:VCALENDAR\r\n";
$message .= "VERSION:2.0\r\n";
$message .= "PRODID:-//Deathstar-mailer//theforce/NONSGML v1.0//EN\r\n";
$message .= "METHOD:REQUEST\r\n";
$message .= "BEGIN:VEVENT\r\n";
$message .= "UID:" . md5(uniqid(mt_rand(), true)) . "example.com\r\n";
$message .= "DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z\r\n";
$message .= "DTSTART:".$date."T".$startTime."00Z\r\n";
/**
These headers were taken from the duplicate question, but they don't
seem to make a difference to how the event is displayed in my calendar.
**/
$message .= "BEGIN:VTIMEZONE\r\n";
$message .= "TZID:Europe/London\r\n";
$message .= "BEGIN:STANDARD\r\n";
$message .= "TZOFFSETFROM:-0100\r\n";
$message .= "TZOFFSETTO:-0100\r\n";
$message .= "DTSTART:".$date."T".$startTime."00Z\r\n";
$message .= "TZNAME:GMT\r\n";
$message .= "END:STANDARD\r\n";
$message .= "END:VTIMEZONE\r\n";
$message .= "DTEND:".$date."T".$endTime."00Z\r\n";
$message .= "SUMMARY:".$subject."\r\n";
$message .= "ORGANIZER;CN=".$organizer.":mailto:".$organizer_email."\r\n";
$message .= "LOCATION:".$location."\r\n";
$message .= "DESCRIPTION:".$desc."\r\n";
foreach($attendees as $attendee){
$message .= "ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN".$attendee[0].";X-NUM-GUESTS=0:MAILTO:".$attendee[1]."\r\n";
}
$message .= "END:VEVENT\r\n";
$message .= "END:VCALENDAR\r\n";
но когда запрос по электронной почте отправляется и добавляется в календарь, Outlook, хотя $startTime
а также $endTime
переменные 09:00
а также 10:00
запрос календаря помещает событие в 10.00
в 11:00
,
Я полагаю, что это потому, что мне не хватает параметра часового пояса в заголовках почты, но я не знаю, как установить его в Europe/London
часовой пояс, как я бы использовал date_default_timezone_set('Europe/London')
в PHP.
Я проверил заголовки почты на клиенте Outlook, и заголовки содержат правильные $startTime
а также $endTime
ценности.
Может кто-нибудь предоставить мне почтовый заголовок, чтобы установить часовой пояс в календаре? Я уже пробовала Часовой пояс в icalendar или vcalendar приглашение на встречу и это включено в мой код выше, но это, кажется, не имеет никакого значения? Правильно ли я структурировал заголовки?
Задача ещё не решена.
Других решений пока нет …