【发布时间】:2015-01-13 13:03:56
【问题描述】:
我尝试了以下代码,并且能够将多个事件在一个嵌入式 ics 中发送到谷歌日历。但是,如果我在 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:2015-03-10_leave_24@gmail.com
ORGANIZER:MAILTO:organizer@gmail.com
ATTENDEE:MAILTO:testuser1@gmail.com
DESCRIPTION:Test E1 Desc
STATUS:CONFIRMED
SEQUENCE:0
SUMMARY:Test E1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20150311T183001Z
DTEND:20150311T182959Z
DTSTAMP:20150310T183000Z
UID:2015-03-11_leave_25@gmail.com
ORGANIZER:MAILTO:organizer@gmail.com
ATTENDEE:MAILTO:testuser1@gmail.com
DESCRIPTION:Test E2 Desc
STATUS:CONFIRMED
SEQUENCE:0
SUMMARY:Test E2
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR';
$from_name = "My Name";
$from_address = "myname@mydomain.com";
$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,它会通过两个事件成功更新。但是,我需要通过使用 php 发送邮件来自动更新 Outlook 日历。
我们有什么方法可以在一封电子邮件中将多个事件发送到 MS Outlook 2010,以便它自动添加到 Outlook 日历中?
【问题讨论】:
标签: php email calendar icalendar outlook-2010