Я пробовал ниже код & смог отправить несколько событий в одном встроенном ics в календарь Google. Но если я открою ту же почту только в MS Outlook 2010 первое свидание отображается в календаре 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;
}
Обратите внимание, что если я скопирую содержимое ical в файл .ics & импортировать в MS Outlook 2010, он успешно обновляется с двумя событиями. Но мне нужно автоматически обновить календарь Outlook, отправив письмо с помощью php.
Есть ли способ, как мы можем отправить несколько событий в одном письме в MS Outlook 2010, чтобы он автоматически добавлялся в календарь Outlook?
По сути, это не работает. Сообщения iMip, как правило, имеют только 1 событие.
Однако один из способов обойти это — превратить это в повторяющееся событие с двумя экземплярами.
Для этого вам необходимо убедиться, что UID
идентично для обоих сообщений, и одно из сообщений имеет RECURRENCE-ID
, Начальное (главное событие) должно иметь либо RDATE
или же RRULE
сделать событие повторяющимся, и второе событие будет действовать как переопределенный экземпляр.
Я не знаю насколько хорошо RDATE
работает на каждом клиенте, и я не знаю, поддерживает ли Outlook 2010 его. я знаю RRULE
широко поддерживается, хотя.
Других решений пока нет …