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

Ben*_*art 6 icalendar google-calendar-api

我通过电子邮件将 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
Run Code Online (Sandbox Code Playgroud)

取消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
Run Code Online (Sandbox Code Playgroud)

Arn*_*aud 1

首先,如果这是邀请,您应该

METHOD:REQUEST
Run Code Online (Sandbox Code Playgroud)

而不是原始邀请中的 METHOD:PUBLISH。这很重要,因为至少在理论上,取消只有在请求之后才有效。

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

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