我正在尝试通过PhpMailer发送.ics文件,以便用户轻松导入。
将此格式发送到Outlook时效果很好,但Gmail无法识别该文件,因此无法将其导入Google日历。
我的ics文件如下所示:
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Romance Standard Time
BEGIN:STANDARD
DTSTART:16011028T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
DTSTART:16010325T020000
BEGIN:DAYLIGHT
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CLASS:PUBLIC
DESCRIPTION:
DTEND;TZID="Romance Standard Time":20130815T154000
DTSTAMP:20130814T094035Z
DTSTART;TZID="Romance Standard Time":20130815T144000
SUMMARY:Your appointment
LOCATION:1000 Brussels
END:VEVENT
END:VCALENDAR
我的PHP代码看起来像这样:
$mail->AddAttachment('../linkToIcs.ics');
文件附加正常,但Gmail无法识别。 然后我尝试将其添加为字符串附件
if (pathinfo($attachment, PATHINFO_EXTENSION) == 'ics') {
$contents = file_get_contents($attachment);
$mail->AddStringAttachment(
$contents,
pathinfo($attachment, PATHINFO_BASENAME),
'7bit',
'text/calendar'
);
}
将其正确添加为附件,但在Gmail中再次无法识别为“可导入”日历事件。
我还应该注意,同一封电子邮件中有一个HTML正文。
关于为什么这不起作用的任何解释都会很棒。
答案 0 :(得分:1)
忘了回答..
我通过在DTEND和DTSTART之后删除TZID来修复它 显然,Gmail无法识别这一点。
答案 1 :(得分:0)
我为google检查了以下PRODID
。有用。但我不确定我们是否真的可以使用它。我是iCalendar
的新手。
-//Google Inc//Google Calendar 70.9054//EN
使用Gmail时,您的PRODID对我不起作用。