Gmail中的ICS文件(PhpMailer)

时间:2013-08-14 10:00:42

标签: php gmail phpmailer icalendar

我正在尝试通过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正文。

关于为什么这不起作用的任何解释都会很棒。

2 个答案:

答案 0 :(得分:1)

忘了回答..

我通过在DTEND和DTSTART之后删除TZID来修复它 显然,Gmail无法识别这一点。

答案 1 :(得分:0)

我为google检查了以下PRODID。有用。但我不确定我们是否真的可以使用它。我是iCalendar的新手。

-//Google Inc//Google Calendar 70.9054//EN 

使用Gmail时,您的PRODID对我不起作用。