Calendar Server 将发送E.4.1 Calendar Server 电子邮件通知配置参数和格式文件中所介绍的电子邮件消息类型。这些消息的格式由表中所列出的关联格式文件 (.fmt) 决定。这些格式文件位于每个语言环境的特定目录中(如英文为 /en,法文为 /fr),如下所示:
/etc/opt/SUNWics5/config
例如,任务(待办事项)警报消息格式的英文版在下面的文件中指定:
/etc/opt/SUNWics5/config/en/mail_todoalarm.fmt
本节包括以下内容:
下表显示了每个 Calendar Server 邮件参数的消息类型、ics.conf 参数名称、默认格式文件说明以及收件人。
表 E–33 ics.conf 文件中的 Calendar Server 电子邮件格式| 消息类型 | 参数 | 格式文件(默认) | 说明 | 收件人 | 
|---|---|---|---|---|
| 发布事件 | fname | 宣布事件或对现有事件的更改 | 在通知中列出的收件人 | |
| 取消事件 | fname | 宣布取消事件 | 在通知中列出的收件人 | |
| 回复事件 | fname | 回复事件通知。 | 在通知中列出的收件人 | |
| 请求事件 | fname | 订阅事件通知。 | 在通知中列出的收件人 | |
| 事件警报 | fname | 即将举行的事件的提醒通知 | 在提醒通知中列出的收件人 | |
| 重复性事件通知 | notificationrecur.fname | "mail_event notificationrecur.fmt" | 通知重复性事件 | 在通知中列出的收件人 | 
| 事件取消通知 | notification.fname | notification.fmt" | 通知取消的事件 | 在通知中列出的收件人 | 
| 重复性事件取消通知 | notificationrecur.fname | notificationrecur.fmt" | 通知取消的重复性事件 | 在通知中列出的收件人 | 
| 参与者回复:接受通知 | notification.fname | notification.fmt" | 通知事件组织者某参与者已接受邀请。 | 事件组织者 | 
| 参与者回复:拒绝通知 | notification.fname | notification.fmt" | 通知事件组织者某参与者已拒绝邀请。 | 事件组织者 | 
| 参与者回复:尝试性接受通知 | acceptnotification.fname | acceptnotification.fmt" | 通知事件组织者某参与者已尝试性接受邀请。 | 事件组织者 | 
| 参与者回复:接受周期事件通知 | notificationrecur.fname | notificationrecur.fmt" | 通知事件组织者某参与者已接受参与周期事件。 | 事件组织者 | 
| 参与者回复:拒绝周期事件通知 | notificationrecur.fname | notificationrecur.fmt" | 通知事件组织者某参与者已拒绝参与周期事件。 | 事件组织者 | 
| 参与者回复:尝试性接受周期事件通知 | tentativeaccept notificationrecur.fname | acceptnotificationrecur.fmt" | 通知事件组织者某参与者已尝试性接受参与周期事件。 | 事件组织者 | 
| 发布任务 | fname | 宣布任务或对现有任务的更改 | 在通知中列出的收件人 | |
| 取消任务 | 宣布取消任务 | 在通知中列出的收件人 | ||
| 回复任务 | fname | 回复任务通知 | 在通知中列出的收件人 | |
| 待办事项请求 | fname | 订阅待办事项通知。 | 在通知中列出的收件人 | |
| 任务警报 | fname | 即将举行的任务的提醒通知 | 在提醒通知中列出的收件人 | 
Calendar Server 通过将特定事件或任务与格式文件的内容合并起来生成通知消息。可以将事件或任务中的数据字段值输出到消息中。通知消息中也可以包括 MIME 标头行以及关联的特殊值。使用特殊字符序列(格式表示法),可以在消息中包括事件、任务和 MIME 标头的值。格式文件中的行都是由特殊字符序列组成的格式字符串,其中的字符序列会在生成邮件消息时替换为日历数据字段的实际值。特殊字符序列由两个字符组成,第一个字符是百分号 (%),第二个字符代表特定的格式表示法。
以下各节介绍特殊字符序列:
下表显示了事件通知中使用的特殊字符序列的格式代码和含义。
表 E–34 事件通知的特殊字符序列| 格式代码 | 含义 | 
|---|---|
| %0 | 本地化格式的开始时间 | 
| %1 | 本地化格式的结束时间 | 
| %A | iCalendar 格式中的 exdates(以分号分隔的 ISO 8601 日期字符串列表,列出要排除的日期) | 
| %a | iCalendar 格式中的 rdates(以分号分隔的 ISO 8601 日期字符串列表,列出周期性日期) | 
| %B | 开始时间(另请参见 %Z) | 
| %b | 以 iCalendar 格式输出开始时间和结束时间。如果开始时间参数的值等于日期,则只输出日期的 month/day/year 部分。如果结束时间和开始时间的 month/day/year 值相同,则仅生成开始时间。 | 
| %C | 创建时间 | 
| %c | 事件类 | 
| %d | 事件说明(另请参见 %F) | 
| %E | 结束时间(另请参见 %Z) | 
| %e | iCalendar 格式中的例外规则 | 
| %F | 事件说明 - 换行、iCalendar 格式(另请参见 %d) | 
| %G | 事件的地理位置(包括维度和经度) | 
| %g | 组织者的电子邮件地址。(不能保证此值的真实性。) | 
| %K | 以 mailto:url 形式表示的组织者的电子邮件 | 
| %k | 警报计数 | 
| %L | 地点 | 
| %l | iCalendar 格式中的周期规则 | 
| %M | 修改时间 | 
| %N | 新行 | 
| %n | 与 DTSTAMP 一起使用的当前时间戳 | 
| %P | 优先级 | 
| %r | 周期 ID(如果此事件没有重复发生,则为空) | 
| %S | 事件序列号 | 
| %s | 汇总 | 
| %t | 事件状态 | 
| %U | 唯一事件标识符 | 
| %Z | 与时间字段代码一起使用,强制以 UTC 时间格式显示时间。(%B 以当地时间显示开始时间,而 %ZB 以 UTC 时间显示开始时间。) | 
| %% | 显示百分号 (%) | 
| % | 指定由代码标识的数据的子格式。(有关详细信息,参见 E.4.3 Calendar Server 通知日期子格式字符串。) | 
可以多种不同的方法格式化日期时间值。使用子格式可以提供附加信息,以说明如何格式化日期时间值。如果不指定子格式,服务器将使用默认格式输出日期。使用子格式字段可以指定要使用的精确格式。
例如,%B 指定在输出字符串中包括事件的开始时间。此默认格式将打印日期、时间、时区以及有关该日期的其他可能的信息。日期值的子格式字符串是 strftime 格式的字符串(参见E.4.6 日期的特殊字符序列)。如果只想了解开始时间的年和月,不要使用 %B,而应使用:%(%m %Y)B。
以下示例:
| The event begins: %B%N The event ends: %(%b %d, %Y %I:%M %p)E%N | 
生成与以下通知类似的输出:
| The event begins Feb 02, 1999 23:30:00 GMT Standard Time The event ends Feb 03, 1999 02:30 AM | 
有时候,只有在某些特定情况下才需要打印某一行。例如,以下行:
| title: %S%N start: %B%N end: %E%N | 
生成与以下通知类似的输出:
| title: Staff Meeting start: Feb 04, 1999 09:00:00 end: Feb 04, 1999 10:00:00 | 
但如果以下两个条件成立,以上示例将生成易误解或不正确的结果:
如果该事件没有截止日期
如果该事件是一个“全天”事件,即开始时间和结束时间在同一天
在这些情况下,最好不要打印结束时间。默认情况下,如果时间戳的属性为 all-day,则只打印年、月和日。此外,如果事件的开始时间有一个 all-day 属性,且事件的结束日期和开始日期为同一天,则会设置一个特殊的条件标记。只应在没有设置特殊条件标记时使用 ? 修饰符打印条件值。
例如,如果将上述示例中的行更改为:
| title: %S%N start: %B%N end: %?E%N | 
则不会打印“全天”事件的最后一行,因为这种事件的开始日期与结束日期相同。为典型的“全天”事件(如生日或周年纪念日)生成的输出如下:
| title: Staff Meeting start: Feb 04, 1999 | 
? 标记可与其他修饰符结合使用。例如:
The event ends: %?(%b %d, %Y %I:%M %p)E%N
下表显示了任务通知的特殊字符序列的格式代码和含义。
表 E–35 任务通知的特殊字符序列| 格式代码 | 含义 | 
|---|---|
| %A | iCalendar 格式中的 exdates(以分号分隔的 ISO 8601 日期字符串列表,列出要排除的日期) | 
| %a | iCalendar 格式中的 rdates(以分号分隔的 ISO 8601 日期字符串列表,列出周期性日期) | 
| %B | 开始时间(另请参见 %Z) | 
| %C | 创建时间 | 
| %c | 任务类 | 
| %D | 到期日期和时间 | 
| %d | 任务说明(另请参见 %F) | 
| %E | IMIP 格式的到期日期和时间 | 
| %e | iCalendar 格式中的例外规则 | 
| %F | 任务说明—换行、iCalendar 格式(另请参见 %d) | 
| %G | 此任务的地理位置(包括维度和经度) | 
| %g | 组织者的电子邮件地址(不能保证此值的真实性) | 
| %K | 以 mailto:URL 形式表示的组织者的电子邮件 | 
| %k | 警报计数 | 
| %L | 位置 | 
| %l | iCalendar 格式中的周期规则 | 
| %M | 修改时间 | 
| %N | 新行 | 
| %n | "now"(当前时间戳,与 DTSTAMP 一起使用) | 
| %P | 优先级 | 
| %r | 周期 ID(如果此任务没有重复发生,则为空) | 
| %S | 是任务的序列号 | 
| %s | 摘要 | 
| %t | 状态 | 
| %U | UID | 
| %Z | 与时间字段代码一起使用,强制以 UTC 时间格式显示时间(%B 以当地时间显示开始时间,而 %ZB 以 UTC 时间显示开始时间) | 
| %% | 显示 % 字符 | 
| %(子格式代码) | 为代码标识的数据指定子格式(有关详细信息,参见 E.4.3 Calendar Server 通知日期子格式字符串) | 
下表显示了日期的特殊字符序列的格式代码和含义。
仅为方便起见,才在本节列出特殊的日期格式代码。Calendar Server 不会重新编写任何代码,只是使用操作系统实现。
| 格式代码 | 含义 | 
|---|---|
| %a | 缩写的工作日名称 | 
| %A | 完整的工作日名称 | 
| %b | 缩写的月份名称 | 
| %B | 完整的月份名称 | 
| %c | 语言环境特定的日期和时间表示 | 
| %d | 以十进制数表示的月份中的日期 (01 - 31) | 
| %H | 以 24 小时格式表示的小时 (00 - 23) | 
| %I | 以 12 小时格式表示的小时 (01 - 12) | 
| %j | 以十进制数表示的一年中的日期 (001 - 366) | 
| %m | 以十进制数表示的月份 (01 - 12) | 
| %M | 以十进制数表示的分钟 (00 - 59) | 
| %p | 以 12 小时格式表示的当前语言环境的 A.M./P.M. 指示器 | 
| %S | 以十进制数表示的秒 (00 - 59) | 
| %U | 以十进制数表示的一年中的周,其中星期日作为一周的第一天 (00 - 53) | 
| %w | 以十进制数表示的工作日(0 - 6;星期日为 0) | 
| %W | 以十进制数表示的一年中的周,其中星期一作为一周的第一天 (00 - 53) | 
| %x | 当前语言环境的日期表示 | 
| %X | 当前语言环境的时间表示 | 
| %y | 以十进制数表示的不带世纪的年份 (00 - 99) | 
| %Y | 以十进制数表示的带世纪的年份 | 
| %Z | 时区名称或缩写,如果时区未知,则无字符 | 
| %% | 百分号 | 
以下示例显示了默认事件提醒通知消息的格式:
| 1  事件提醒通知
 2  ~~MIME 版本: 1.0%N
 3  ~~内容类型: text/plain; charset=%s%N
 4  ~~内容传输编码: %x%N%N
 5      摘要: %s%N
 6        开始时间: %(%a, %d %b %Y %I:%M %p)B%N
 7        结束时间: (%a, %d %b %Y %I:%M %p)E%N
 8      地点: %L%N%N
 9  说明: %N%d%N
          | 
本示例中每一行的说明如下:
第 1 行是消息主题。
第 2 行以 ~~ 开头,表明它是一个 MIME 包装行。也就是说,特殊字符序列的替换物与内部 MIME 对象关联,而不是与事件或任务关联。特殊序列 %N 表示换行。主题行不需要特殊的换行序列,而其他各行都需要。
第 3 行也是一个 MIME 标头行。它包含特殊字符序列 %s,该序列将被替换为与电子邮件中的事件或任务相关联的字符集。
第 4 行是最后一个 MIME 行,%x 是此消息所需的内容传输编码字符串。
第 5 行列出了事件摘要,事件摘要是用 %s 调出来的。
第 6 行列出了事件的开始时间。它利用特殊字符序列 %B 的子格式字符串。有关详细信息,参见 E.4.3 Calendar Server 通知日期子格式字符串。
第 7 行列出了事件的结束时间。
第 8 行列出了事件的位置。
第 9 行列出了事件说明。
下面的样例与以上示例生成的通知消息类似:
| 自: jsmith@sesta.com (James Smith)
 日期: 1999 年 11 月 15 日星期三 19:13:49
 到: jsmith@sesta.com
 主题: 时间提醒通知
 MIME 版本: 1.0
 内容类型: text/plain; charset=us-ascii
 内容传输编码: 7 位
   摘要: smtp_rig 事件 1
       开始时间: 1999 年 11 月 16 日星期二 02:00 PM
       结束时间: 1999 年 11 月 16 日星期二 03:00 PM
   地点: 格林会议室
   说明: 这是偶然生成的事件的说明。 | 
以下示例显示了更复杂的、由多部分组成的消息。此示例包括一个文本部分和一个 IMIP PUBLISH 部分。
| 事件发布
 ~~MIME 版本: 1.0%N
 ~~内容类型: multipart/mixed; boundary="%b"%N%N
 这是 MIME 格式的多部分消息。%N
 ~~--%b%N
 ~~内容类型: text/plain; charset=%s%N
 ~~内容传输编码: %x%N%N
     摘要: %s%N
       开始时间: %(%a, %d %b %Y %I:%M %p)B%N
       结束时间: %(%a, %d %b %Y %I:%M %p)E%N
     地点: %L%N%N
    说明: %N%d%N%N
 ~~--%b%N
 ~~内容类型: text/calendar; method=%m; component=%c; charset=%s%N
 ~~内容传输编码: %x%N%N
 开始:VCALENDAR%N
时间长度:-//iPlanet/Calendar Hosting Server//EN%N
 方法:PUBLISH%N
 版本:2.0%N
 开始:VEVENT%N
 组织者:%K%N
 时间戳:%Zn%N
 开始时间:%ZB%N
 结束时间:%ZE%N
 摘要:%s%N
UID:%U%N
 %R
 %A
 %a
 %e
 %l
 序列:%S%N
 地点:%L%N
 GEO:%G%N
 %F
 状态:%t%N
 结束:VEVENT%N
 结束:VCALENDAR%N
 ~~--%b--
          |