自定义 ICS 事件,添加动作

Customise ICS event, add actions

我想自定义作为电子邮件附件发送的 ICS 事件,以便用户能够直接从邮件视图中查看和确认事件 (example)。这是附件 invite.ics 的样子:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example//Booking//EN
METHOD:PUBLISH
BEGIN:VEVENT
UID:3qnr@example.net
SEQUENCE:0
DTSTAMP:20180420T065714Z
DTSTART:20180518T080000Z
DTEND:20180518T090000Z
SUMMARY:Example - Booking room 21
LOCATION:Somewhere
DESCRIPTION:Room description
ORGANIZER;CN="Me":mailto:support@example.net
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE
URL;VALUE=URI:https://example.net/reservation/12
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

在这个事件中,URL不起作用(我的意思是URL 属性没有给事件带来任何东西)。

我想在这次活动中:

我深入研究了 ICS 规范,但它们非常复杂,并且让邮寄者实施了很多具体选项!我不是在寻找使用 Google 日历 API 的解决方案,因为我希望大多数现有邮件程序都支持此功能。

这是我想要得到的示例:example (在这张图片上,我想用自定义图像更改通用事件图像并捕捉不同操作的点击)。

我不确定这是否可能,也许根本不可能!

提前致谢。

让电子邮件客户端处理邀请是可能的。在上面的示例中,您需要将 METHOD 属性 更改为 "REQUEST",使用收件人的实际电子邮件地址使 ATTENDEE 符合要求,最后按照 iMIP 的规则生成您的电子邮件(参见例如 Multipart email with text and calendar: Outlook doesn't recognize ics )。 一般来说,accept/decline 会触发一个 IMIP REPLY 发送回组织者的电子邮件地址。

让 Yes/No 响应被捕获并通过一些 url 发送是不可能的,除非你针对一个非常特殊的客户,并且在你的控制下。所以如果你想自动接受邀请,你需要在组织者这边有一些东西来处理包含 iMIP REPLY 的传入电子邮件。

就让客户端显示图像等而言...您最接近的做法是使用非标准

X-ALT-DESC;FMTTYPE=text/html

属性 并在此处显示 HTML 片段。此 属性 是非标准的,它仅适用于某些电子邮件客户端。无论如何,出于安全原因,我怀疑电子邮件客户端是否会让您显示外部图像。