Gmail / Google日历:通过电子邮件发送ICS文件取消事件

时间:2018-10-04 19:40:13

标签: google-calendar-api icalendar

我通过电子邮件将ICS文件发送给用户,以帮助自动管理约会,当任何一方单击我网站上的取消链接时,我都会发送一封包含取消ICS文件的新电子邮件。

我的目标市场主要使用gmail。

当他们收到初始电子邮件时,可以单击以将事件从ics文件添加到其Google日历中。

当他们收到取消电子邮件时,无法更新事件。

如果相关,则电子邮件来自support@domain.com

有什么办法可以通过电子邮件处理ICS文件?


原始事件ICS:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//sebbo.net//ical-generator//EN
METHOD:PUBLISH
BEGIN:VEVENT
UID:AUniqueIDThatMatches
SEQUENCE:0
DTSTAMP:20181004T184001Z
DTSTART:20181005T210000Z
DTEND:20181005T213000Z
SUMMARY:SESSION
LOCATION:Online session
DESCRIPTION:SESSION
ORGANIZER;CN="Admin":mailto:support@domain.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CN="Admin":MAILTO:support@domain.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CN="ben hart":MAILTO:attendee@domain.com
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER:-PT10M
DESCRIPTION:SESSION
END:VALARM
BEGIN:VALARM
ACTION:AUDIO
TRIGGER:-PT5M
ATTACH;VALUE=URI:Basso
END:VALARM
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

取消ICS:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//sebbo.net//ical-generator//EN
METHOD:CANCEL
BEGIN:VEVENT
UID:AUniqueIDThatMatches
SEQUENCE:1
DTSTAMP:20181004T184057Z
DTSTART:20181005T210000Z
DTEND:20181005T213000Z
SUMMARY:SESSION
LOCATION:Online session
DESCRIPTION:SESSION
ORGANIZER;CN="Admin":mailto:support@domain.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CN="Admin":MAILTO:support@domain.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CN="ben hart":MAILTO:attendee@domain.com
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER:-PT10M
DESCRIPTION:SSESSION
END:VALARM
BEGIN:VALARM
ACTION:AUDIO
TRIGGER:-PT5M
ATTACH;VALUE=URI:Basso
END:VALARM
STATUS:CANCELLED
END:VEVENT
END:VCALENDAR

1 个答案:

答案 0 :(得分:0)

首先,如果这是邀请,那么您应该拥有

METHOD:REQUEST

代替原始邀请中的METHOD:PUBLISH。这一点很重要,因为从理论上讲,取消仅在请求后才有效。

然后,您应该从两条消息中删除VALARM垃圾。无论如何,它们都将在请求中被忽略。

最后,您是否在取消电子邮件的内容类型中包含正确的方法?