OOF.mrk 文件是 ASCII 纯文本文件,位于每名用户的根 \data\ 文件夹,定义作为自动应答器结果返回的邮件。 当自动应答器触发了一封自动应答邮件,将会处理脚本文件并扫描宏,然后会由触发该应答的入站邮件的真实数据来替代。 忽略以“#”字符开头的行,用作注释。 下方列出了两封示例邮件。
$HEADERS$ |
该宏将被所有入站邮件的报头替换。 该宏前面紧接的文本将在每个扩展的行首进行复制。 |
$HEADER:XX$ |
该宏可以使“xx”所指定的报头值在邮件中扩展。 例如: 如果入站邮件有“TO: joe@example.com”,那么“$HEADER:TO$”宏将扩展为“joe@example.com”。 如果原始邮件拥有“SUBJECT: 这是主题”,那么 $HEADER:SUBJECT$ 宏将被文本“这是主题”替代。 |
$BODY$ |
该宏将被整个邮件正文替换。 在尝试保留不同语言的字符集时,MDaemon 将使用二进制数据而非纯文本读取邮件,从而允许逐字节复制邮件正文。 |
$BODY-AS-TEXT$ |
与 $BODY$ 宏类似,该宏将用文本而非二进制的形式被整个邮件正文替代。 该宏前面紧接的文本将在每个扩展的行首进行复制。 所以,使用一个脚本中的“>>$BODY-AS-TEXT$”会将原始邮件的每一行放到已生成的邮件中,但是每一行以“>>”作为开头。 文本也将添加到宏的右边。 |
$SENDER$ |
该宏解析成入站邮件中“From: ”报头中所包含的完整地址。 报头中的地址。 |
$SENDERMAILBOX$ |
该宏解析成收件人的邮箱。 邮箱是邮件地址中“@”符号左边的部分。 |
$SENDERDOMAIN$ |
该宏解析成收件人的域。 域是邮件地址中“@”符号右边的部分。 |
$RECIPIENT$ |
此宏解析成邮件收件人的完整地址。 |
$RECIPIENTMAILBOX$ |
该宏解析成邮件收件人的邮箱。 邮箱是邮件地址中“@”符号左边的部分。 |
$RECIPIENTDOMAIN$ |
该宏解析成邮件收件人的域。 域是邮件地址中“@”符号右边的部分。 |
$SUBJECT$ |
该宏解析成“Subject: ”报头的值。 报头中的地址。 |
$MESSAGEID$ |
该宏解析成“Message-ID”报头的值。 |
$CONTENTTYPE$ |
该宏解析成“Content-Type”报头的值。 |
$PARTBOUNDARY$ |
该宏解析成多部件(multipart)邮件“Content-Type”报头中找到的 MIME“局部分界线”的值。 |
$DATESTAMP$ |
该宏扩展为 RFC-2822 样式的日期时间戳行。 |
$ACTUALTO$ |
某些邮件包含“ActualTo”字段,一般表示由原来用户在任何格式重定或别名转换之前输入的目标邮箱和主机。 该宏扩展为此值。 |
$ACTUALFROM$ |
某些邮件包含“ActualFrom”字段,一般表示任何格式重定或别名转换之前的原始邮箱和主机。 该宏扩展为此值。 |
$REPLYTO$ |
该宏解析成“ReplyTo”报头的值。 |
$PRODUCTID$ |
该宏扩展为 MDaemon 版本信息字符串。 |
$AR_START$ |
返回自动应答器的开始日期/时间。 |
$AR_END$ |
返回自动应答器的结束日期/时间。 |
下方列出的宏控制了自动应答邮件的报头。
%SetSender%
例如: %SetSender%=mailbox@example.com
为了达到自动回复邮件的目的,该宏在构建自动回复邮件报头之前重置了原始邮件的发件人。 因此,该宏控制了自动回复邮件的 TO 报头。 例如,如果原始邮件的发件人是“user2@example.org”,那么收件人的自动应答器将使用 %SetSender% 宏来将其更改成“user1@example.com”,然后会将自动应答邮件的“收件人”报头设置成“user1@example.com”。
%SetRecipient%
例如: %SetRecipient%=mailbox@example.com
为了达到自动应答邮件的目的,该宏在构建自动应答邮件报头之前重置了原始邮件的收件人。 因此,该宏控制了自动应答邮件的“发件人”报头。 例如,如果原始邮件的收件人是“michael@example.com”,而且 Michael 的账户有一个自动应答器,使用 %SetRecipient% 宏将其更改成“michael.mason@example.com”,然后会将自动应答邮件的“发件人”报头设置成 “michael.mason@example.com”。
%SetReplyTo%
例如: %SetReplyTo%=mailbox@example.com
控制了自动应答邮件的 ReplyTo 报头的值。
%SetSubject%
例如: %SetSubject%=Subject Text
替换初始邮件的主题值。
%SetMessageId%
例如: %SetMessageId%=ID String
更改邮件的 ID 字符串。
%SetPartBoundary%
例如: %SetPartBoundary%=Boundary String
更改局部分界线。
%SetContentType%
例如: %SetContentType%=MIME type
将邮件的内容类型更改为声明的值。
%SetAttachment%
例如: %SetAttachment%=filespec
强制 Mdaemon 在新生成的自动回复邮件上附加一个指定文件为附件。 只有在附件屏幕可以被附加到自动应答器。
使用几个自动应答宏的简单的 oof.mrk 自动应答邮件:
$SENDER$ 您好
我将不会读取与 $SUBJECT$ 相关的您的邮件,因为我正在放假。 Hurray!!!
此致,
$RECIPIENT$
您同样可以使用一些报头替代宏来扩展脚本,并控制当自动回复邮件发回到 $SENDER$ 时将会生成的报头:
$SENDER$ 您好
我将不会读取与 $SUBJECT$ 相关的您的邮件,因为我正在放假。 Hurray!!!
此致,
$RECIPIENT$
%SetSubject%=RE: $SUBJECT$
%SetAttachment%=c:\photos\me_on_vaction.jpg
使用了此脚本后,自动回复邮件会将“RE: ”添加到主题的开头并附有指定文件。
对“%SetSubject%=RE: $SUBJECT$”行作如下处理:
1.$SUBJECT$ 部分将被原始邮件的主题文本扩展并替代。 这将使该字符串等于:
%SetSubject%=RE: 原始主题文本
2.MDaemon 以新计算的内容替代了原始主题,原始主题存储于内部缓存中。 此后,对于脚本中“$SUBJECT$”的任何使用都将返回一个新结果。
注意这些新宏的位置——它们列于回复脚本的底部。 应注意避免副作用。 例如,如果将 %SetSubject% 宏置于 $SUBJECT$ 宏之前(此宏位于回复脚本的第二行),那么在 $SUBJECT$ 宏扩展时,主题文本早已改变。 因此,不以原始邮件的“Subject:”报头内容来替代 $SUBJECT$, 而以您设置的 %SetSubject% 值来替代。
还请参阅: