(字符串,UTF-8 正则表达式)对于移动设备始发的电子邮件,网关配置文件需要从 SMS 消息的文本中提取目标电子邮件地址。此操作是通过一个或多个 POSIX 兼容的正则表达式 (RE) 来实现的。每个正则表达式都将计算 SMS 消息的文本,直到找到一个生成目标电子邮件地址的匹配项或正规表达式的列表用完为止。
PARSE_RE_* 和 ROUTE_TO 选项互斥。在同一网关配置文件中同时使用这两个选项将导致配置错误。
每个正则表达式都必须是 POSIX 兼容的,而且必须使用 UTF-8 字符集编码。正则表达式必须以字符串 0 的形式输出目标地址。它们可以选择性地输出在 Subject: 标题行中用作字符串 1 的文本,以及在消息正文中用作字符串 2 的文本。任何未被正则表达式“消耗的”文本还可在消息正文中使用,其后跟的任何文本输出用作字符串 2 。
正则表达式的尝试顺序为 PARSE_RE_0、PARSE_RE_1、...,直至 PARSE_RE_9。如果没有指定任何正则表达式,则使用以下默认正则表达式:
[ \t]*([^\( ]*)[ \t]*(?:\(([^\)]*)\))?[ \t]*(.*)
这个默认正则表达式可分为以下几个成分:
[ \t]*
忽略前导空格字符(SPACE 和 TAB)。
([^\( ]*)
目标电子邮件地址。这是首先报告的字符串。
[ \t]*
忽略空格字符。
(?:\(([^\)]*)\))?
包含在括号中的可选主题文本。这是第二次报告的字符串。前导 ?: 可使外围括号不报告字符串。它们仅用于将其内容一起编组到一个后缀为 ? 的单一 RE 中。后缀 ? 使此 RE 分量仅匹配零或一次,等效于表达式 {0,1}。
[ \t]*
忽略空格字符。
(.*)
消息正文的其余文本。这是第三次报告的字符串。
例如,对于上述正则表达式,SMS 消息样例:
dan@sesta.com(Testing)This is a test
将产生电子邮件消息:
To: dan@sesta.com Subject: Testing |
This is a test
另一个示例,SMS 消息:
sue@sesta.com This is another test
将产生:
To: sue@sesta.com
This is another test
请注意,在用这些正则表达式进行计算之前,SMS 消息将被转换为统一字符编码的 UTF-16 编码。然后,转换的文本将使用先前从 UTF-8 转换为 UTF-16 的正则表达式进行评估。之后,评估结果将转换为针对目标电子邮件地址的 US-ASCII、针对 Subject: 文本的 EMAIL_HEADER_CHARSET(如果有)以及针对邮件正文的 EMAIL_BODY_CHARSET(如果有)。