Calendar Server 邮件参数中介绍了 Calendar Server 发送的电子邮件消息类型。这些消息的格式由表中所列出的关联格式文件 (.fmt) 决定。这些格式文件位于每个语言环境的特定目录中(如英文为 /en,法文为 /fr),如下所示:
/etc/opt/SUNWics5/config
例如,任务(待办事件)警报消息格式的英文版在下面的文件中指定:
/etc/opt/SUNWics5/config/en/mail_todoalarm.fmt
本节包括以下内容:
下表显示了每个 Calendar Server 邮件参数的消息类型、参数名称、默认格式文件说明以及收件人。
表 E–30 ics.conf 文件中的 Calendar Server 电子邮件格式
消息类型 |
参数 |
格式文件(默认) |
说明 |
收件人 |
---|---|---|---|---|
发布事件 |
宣布事件或对现有事件的更改 |
在通知中列出的收件人 |
||
取消事件 |
宣布取消事件 |
在通知中列出的收件人 |
||
回复事件 |
mail_eventreply.fmt |
回复事件通知。 |
在通知中列出的收件人 |
|
请求事件 |
"mail_eventrequest.fmt" |
订阅事件通知。 |
在通知中列出的收件人 |
|
事件警报 |
即将举行的事件的提醒通知 |
在提醒通知中列出的收件人 |
||
重复性事件通知 |
"mail_eventnotificationrecur .fmt" |
通知重复性事件 |
在通知中列出的收件人 |
|
事件取消通知 |
"mail_eventcancel notification.fmt" |
通知取消的事件 |
在通知中列出的收件人 |
|
重复性事件取消通知 |
"mail_ eventcancelnotification recur.fmt" |
通知取消的重复性事件 |
在通知中列出的收件人 |
|
发布任务 |
宣布任务或对现有任务的更改 |
在通知中列出的收件人 |
||
取消任务 |
宣布取消任务 |
在通知中列出的收件人 |
||
回复任务 |
"mail_todoreply.fmt" |
回复任务通知 |
在通知中列出的收件人 |
|
待办事件请求 |
"mail_todorequest.fmt" |
订阅待办事件通知。 |
在通知中列出的收件人 |
|
任务警报 |
即将举行的任务的提醒通知 |
在提醒通知中列出的收件人 |
Calendar Server 通过将特定事件或任务与格式文件的内容合并起来生成通知消息。可以将事件或任务中的数据字段值输出到消息中。通知消息中也可以包括 MIME 标头行以及关联的特殊值。使用特殊字符序列(格式表示法),可以在消息中包括事件、任务和 MIME 标头的值。格式文件中的行都是由特殊字符序列组成的格式字符串,其中的字符序列会在生成邮件消息时替换为日历数据字段的实际值。特殊字符序列由两个字符组成,第一个字符是百分号 (%),第二个字符代表特定的格式表示法。
以下各节介绍特殊字符序列:
下表显示了事件通知的特殊字符序列的格式代码和含义。
表 E–31 事件通知的特殊字符序列
格式代码 |
含义 |
---|---|
%0 |
本地化格式的开始时间 |
%1 |
本地化格式的结束时间 |
%A |
iCalendar 格式中的 exdates(以分号分隔的 ISO 8601 日期字符串列表,列出要排除的日期) |
%a |
iCalendar 格式中的 rdates(以分号分隔的 ISO 8601 日期字符串列表,列出周期性日期) |
%B |
开始时间(请参见 %Z) |
%b |
以 iCalendar 格式输出开始时间和结束时间。如果开始时间的参数为 value=date,则只输出日期的 month/day/year 部分。如果结束时间和开始时间的 month/day/year 值相同,则仅生成开始时间。 |
%C |
创建时间 |
%c |
事件类 |
%d |
事件说明(请参见 %F) |
%E |
结束时间(请参见 %Z) |
%e |
iCalendar 格式中的例外规则 |
%F |
事件说明- - 换行/iCalendar 格式(请参见 %d) |
%G |
事件的地理位置(包括维度和经度) |
%g |
组织者的电子邮件地址。(不能保证此值的真实性。) |
%K |
以 mailto:url 形式表示的组织者的电子邮件url |
%k |
警报计数 |
%L |
地点 |
%l |
iCalendar 格式中的周期规则 |
%M |
修改时间 |
%N |
新行 |
%n |
与 DTSTAMP 一起使用的当前时间戳 |
%P |
优先级 |
%r |
周期 ID(如果此事件没有重复发生,则为空) |
%S |
事件序列号 |
%s |
汇总 |
%t |
事件状态 |
%U |
唯一事件标识符 |
%Z |
与时间字段代码一起使用,强制以 UTC 时间格式显示时间。(%B 以当地时间显示开始时间,而 %ZB 以 UTC 时间显示开始时间。) |
%% |
显示百分号 (%) |
%(子格式代码) |
指定由代码标识的数据的子格式。(有关详细信息,请参见日期的子格式。) |
可以多种不同的方法格式化日期时间值。使用子格式可以提供附加信息,以说明如何格式化日期时间值。如果不指定子格式,服务器将使用默认格式输出日期。使用子格式字段可以指定要使用的精确格式。
例如,%B 指定在输出字符串中包括事件的开始时间。此默认格式将打印日期、时间、时区以及有关该日期的其他可能的信息。日期值的子格式字符串是 strftime 格式的字符串(请参见日期的特殊字符序列)。如果只需要了解开始时间的年和月,请不要使用 %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–32 任务通知的特殊字符序列
格式代码 |
含义 |
---|---|
%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 时间显示开始时间) |
%% |
显示 % 字符 |
%(子格式代码) |
指定由代码标识的数据的子格式(有关详细信息,请参见日期的子格式) |
下表显示了日期的特殊字符序列的格式代码和含义。
仅为方便起见,才在本节列出特殊的日期格式代码。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 的子格式字符串。有关详细信息,请参见日期的子格式。
第 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-- |