2015-01-13 1 views
1

Я попытался под кодом & смог отправить несколько событий в один встроенный ics в календарь Google. Но если я открою одну и ту же почту в MS Outlook 2010, то только первая дата будет отображаться в календаре перспективы.PHP отправляет несколько запросов о событиях в одном письме в Outlook

Ниже приведен мой код.

<?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; 
    } 

Обратите внимание, что если я копирую скую содержимое на импорт Микросхемы файл & в MS Outlook 2010, он получает успешно обновлен с двумя событиями. Но мне нужно обновить календарь Outlook автоматически, отправив почту с помощью php.

Есть ли способ отправить несколько событий в одном письме в MS Outlook 2010, чтобы он автоматически добавился в календарь Outlook?

ответ

0

В принципе, это не работает. Сообщения iMip имеют только 1 событие.

Однако один из способов обойти это - превратить это в повторяющееся событие с двумя экземплярами.

Для этого вам необходимо убедиться, что UID идентичен для обоих сообщений, а одно из сообщений имеет RECURRENCE-ID. Начальное (главное событие) должно быть либо RDATE, либо RRULE, чтобы сделать событие повторяющимся, а второе событие будет действовать как переопределенный экземпляр.

Не знаю, насколько хорошо RDATE работает на каждого клиента, и я не знаю, поддерживает ли Outlook 2010 его. Я знаю, что RRULE широко поддерживается.

+0

Спасибо и это решение работает. Однако мне нужно другое разъяснение. Когда события отправляются как повторяющиеся события, мне нужно обновить каждое повторяющееся событие с помощью разных деталей через вторую почту. Например. Повторяющееся событие имеет 4 дня. В следующем письме я хочу обновить первое сводку событий, чтобы «E1 был одобрен и принят», 2-я сводка событий для «E2 отклоняется», третье событие не изменено и 4-е событие должно быть отменено. Это можно сделать? Если да, то как? Я пытался увеличить SEQUENCE, но это не сработало для меня. Очень ценю, если вы можете привести пример кода для этого. – Emma

+0

Другая проблема, с которой я столкнулся, - события не добавляются по умолчанию. Мне пришлось дважды кликать по теме письма, и только события добавляются в календарь Outlook. Есть ли решение для этого? – Emma