为什么有时Gmail会让我自动添加icalendar文件,有时候没有?

时间:2016-05-18 07:02:25

标签: email gmail icalendar gmail-api

我正在开发一个应用程序,它向用户提供带有一些事件的.ics(iCalendar文件)。这个文件是通过电子邮件发送的,我已经意识到有时gmail会让你自动添加,有时候没有。有人知道为什么会这样吗? 我的ics文件包含9个事件:

BEGIN:VCALENDAR
BEGIN:VEVENT
SUMMARY:Pràctica  1 de Màquines Elèctriques
DTSTART;VALUE=DATE-TIME:20160425T160000
DTEND;VALUE=DATE-TIME:20160425T180000
LOCATION:Etseib B-B PL-1
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  1 de Màquines Elèctriques
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  2 de Màquines Elèctriques
DTSTART;VALUE=DATE-TIME:20160509T160000
DTEND;VALUE=DATE-TIME:20160509T180000
LOCATION:Etseib B-B PL-1
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  2 de Màquines Elèctriques
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  3 de Màquines Elèctriques
DTSTART;VALUE=DATE-TIME:20160530T160000
DTEND;VALUE=DATE-TIME:20160530T180000
LOCATION:Etseib B-B PL-1
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  3 de Màquines Elèctriques
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  4 de Màquines Elèctriques
DTSTART;VALUE=DATE-TIME:20160307T160000
DTEND;VALUE=DATE-TIME:20160307T180000
LOCATION:Etseib H-5.4
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  4 de Màquines Elèctriques
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  1 de Tecnologia i Selecció de Materials
DTSTART;VALUE=DATE-TIME:20160502T100000
DTEND;VALUE=DATE-TIME:20160502T120000
LOCATION:Etseib E-E -1
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  1 de Tecnologia i Selecció de Materials
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  2 de Tecnologia i Selecció de Materials
DTSTART;VALUE=DATE-TIME:20160509T100000
DTEND;VALUE=DATE-TIME:20160509T120000
LOCATION:Etseib E-E -1
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  2 de Tecnologia i Selecció de Materials
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  3 de Tecnologia i Selecció de Materials
DTSTART;VALUE=DATE-TIME:20160523T100000
DTEND;VALUE=DATE-TIME:20160523T120000
LOCATION:Etseib E-E -1
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  3 de Tecnologia i Selecció de Materials
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  4 de Tecnologia i Selecció de Materials
DTSTART;VALUE=DATE-TIME:20160426T120000
DTEND;VALUE=DATE-TIME:20160426T140000
LOCATION:Etseib B-B.5
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  4 de Tecnologia i Selecció de Materials
TRIGGER:-PT1H
END:VALARM
END:VEVENT
BEGIN:VEVENT
SUMMARY:Pràctica  1 de Termotècnia
DTSTART;VALUE=DATE-TIME:20160309T120000
DTEND;VALUE=DATE-TIME:20160309T170000
LOCATION:Etseib H-H 7.56
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Demà Pràctica  1 de Termotècnia
TRIGGER:-PT1H
END:VALARM
END:VEVENT
END:VCALENDAR

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。有时,您通过电子邮件发送的事件将无法正常工作,因为某些属性无效。我建议你将有效邀请的来源与没有有效邀请的来源进行比较,你可能会发现问题。 您可以在此处验证来源: http://icalendar.org/validator.html

我在验证器中运行了代码,似乎缺少一些属性。

1 即可。在 VCALENDAR 之后,应该有属性PRODIDVERSION。即使它们是强制性的,您也只需要在ics文件中包含它们一次。

<强> 2 即可。对于您创建的每个事件,您需要包含 UID ,这是一种独特的密钥,只要它是唯一的,它就可以是任何东西。此外,您还需要一个 DTSTAMP ,其日期格式与 DTSTART 相同。您可以阅读here

此外,如果你决定使用周期性事件,你将只有一个事件只有一个重复规则,你可以在同一个网站上阅读其他两个事件。

希望我能提供帮助。