格式化电子邮件/邀请outlook自动呈现为日历事件


Formatting email / invite for outlook to automatically render as calendar event

我编写了一个PHP脚本,它发送一封带有iCal文件的电子邮件,其内容格式如下:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:MEETINGSENDER
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150616T130000Z
DTEND:20150616T140000Z
DTSTAMP:20150616T120000Z
ORGANIZER;CN=meetingorganizer@sampledomain.com:mailto:meetingorganizer@sampledomain.com
UID:21898556db8793bd3c@testdomain.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP= TRUE;CN=meetingorganizer@sampledomain.com;X-
NUM-GUESTS=0:mailto:meetingorganizer@sampledomain.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=testattendee@company.com;X-NUM-
GUESTS=0:mailto:testattendee@company.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=testattendee2@company.com.com;X-
NUM-GUESTS=0:mailto:testattendee2@company.com.com
CREATED:20150616T120000Z
DESCRIPTION:Thank you for requesting a meeting!
LAST-MODIFIED:20150616T120000Z
LOCATION:Phone Meeting
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:This is a test meeting
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

当电子邮件被gmail客户端接收时,会议呈现为日历项目,并为用户提供自动添加到日历的选项(而不必下载ICS文件并手动执行此操作)。

然而,当电子邮件被outlook客户端接收时,它不提供日历选项,如接受,拒绝等。相反,用户必须下载ical文件。这很奇怪,因为如果我使用outlook从gmail向用户发送邀请,它会给他们默认的日历选项,如批准,拒绝等。

我是否在iCal文件中丢失了一些东西,或者我是否需要在电子邮件内容中添加某种特殊的元数据/标题以使此工作与outlook正确?

尝试将iCal作为文本/日历内容类型的消息中唯一的MIME部分。