以下图为例,这是一封会议邀请邮件在Foxmail客户端的展示效果。本文主要介绍图中显示的会议邀请信息(如会议时间、地址等)在邮件原文中的存在形式和数据结构。
会议邀请示例邮件
日程原文信息
------=_Part_0_64634025.1714110310636 Content-Type: text/calendar;method=REQUEST;charset=UTF-8 Content-Transfer-Encoding: quoted-printable BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Mailtech Inc//Coremail Calendar V1//EN METHOD:REQUEST BEGIN:VTIMEZONE TZID:Asia/Shanghai BEGIN:STANDARD TZOFFSETFROM:+0800 TZOFFSETTO:+0800 DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE BEGIN:VEVENT ORGANIZER;CN=3D=E6=B5=8B=E8=AF=951:mailto:t1@mailabc.cn ATTENDEE;ROLE=3DREQ-PARTICIPANT;CUTYPE=3DINDIVIDUAL;PARTSTAT=3DNEEDS-ACTION= ;RSVP=3D TRUE;CN=3D=E6=B5=8B=E8=AF=952:mailto:t2@mailabc.cn DTSTART;TZID=3DAsia/Shanghai:20240504T140000 DTSTAMP:20240426T054510Z DTEND;TZID=3DAsia/Shanghai:20240504T150000 LAST-MODIFIED:20240426T054510Z LOCATION:=E4=B8=80=E6=A5=BC=E4=BC=9A=E8=AE=AE=E5=AE=A4 SUMMARY:=E5=BC=80=E4=BC=9A=E5=95=A6 UID:a01bf981-bf9d-45c2-966a-0e6ab124f96f DESCRIPTION:=E6=B2=A1=E4=BA=8B=E5=B0=B1=E5=BC=80=E4=B8=AA=E4=BC=9A=E5=90=A7= =EF=BC=9F X-ALT-DESC:省略部分内容... URL: TRANSP: CATEGORIES:MEETING CLASS:PUBLIC STATUS:CONFIRMED END:VEVENT END:VCALENDAR
Content-Type:
- text/calendar:表明邮件正文包含一个符合iCalendar标准(RFC 5545)的日历事件。
- method=REQUEST: 指定该日历数据是一个事件请求。这意味着发送者希望通过这封邮件邀请收件人参加某个特定的活动或会议。收件人可以在其日历应用中接受、拒绝、暂定此邀请。
- charset=UTF-8: 指定邮件正文中的文本字符使用UTF-8编码。
Content-Transfer-Encoding:
- quoted-printable说明了邮件正文内容在传输过程中使用的编码方式。这种编码的典型特征是包含大量的=xx字符。
BEGIN:VCALENDAR和END:VCALENDAR之间的内容表示采用iCalendar标准表示的会议邀请信息。关于这部分内容可以参考往期的CalDAV协议文章介绍,或者自行查阅资料。
会议邀请邮件的处理动作请求
会议邀请邮件Content-Type头部字段中的method参数除了REQUEST还可以有其他值。这些值通常用于定义iCalendar消息的具体类型或用途。
以下是一些可能的method值:
- PUBLISH: 当你想将事件信息发布到某个日历上时,可以使用PUBLISH方法。这通常用于共享事件或让其他人能够查看你的日历。
- REFRESH: 当你想更新之前发布的事件信息时,可以使用REFRESH方法。这有助于确保所有订阅了你的日历的人都能获取到最新的事件数据。
- CANCEL: 如果你想取消之前发送的会议邀请或事件,可以使用CANCEL方法。这将向收件人发送一个通知,告知他们原始的事件或邀请已被取消。
- REPLY: 当收到一个会议邀请并希望进行响应(如接受、拒绝或待定)时,可以使用REPLY方法。这将向邀请发送者发送你的响应。
- COUNTER: 如果你想对收到的会议邀请提出一个修改建议(例如更改会议时间或地点),可以使用COUNTER方法。这将向邀请发送者发送你的修改建议。
- ADD: 用于向现有的日历中添加新的事件或条目。
- DELETE: 用于从日历中删除事件或条目。
总结
会议邀请邮件的本质是将会议邀请信息按照iCalendar标准放到邮件正文中,客户端根据自身的能力解析并展示。如果客户端不支持展示iCalendar标准的内容,则会显示为一个ics扩展名的附件。