为了将电子邮件发送到远程站点,必须将电子邮件转换成能被远程 SMSC 所理解的 SMS 消息。本节说明将 SMS 通道中排队的电子邮件消息转换成一个或多个 SMS 消息的过程。如下文所述,选项可以控制生成的 SMS 消息的最大数目、这些 SMS 消息的最大总长度和任意一条 SMS 消息的最大大小。只有电子邮件消息的文本部分(即,MIME 文本内容类型)会被使用,并且还可以控制已转换部分的最大数目。
电子邮件消息的标题行和文本部分中所使用的字符集均将被转换成 Unicode,然后再转换成相应的 SMS 字符集。
如果没有 SMS_TEXT 映射表(请参见站点定义的文本转换),已排入 SMS 通道的电子邮件消息将按图 D–2 中的说明进行处理。
以下步骤与图 D–2 中的编号框相对应:
启动一个空输出缓冲区。该缓冲区所使用的字符集是统一字符编码。
电子邮件消息的创始者地址来自以下五个源之一,这些源按首选项的降序显示:
1. Resent-from: 2. From: 3. Resent-sender: 4. Sender: 5. Envelope From: |
如果创始者地址是空字符串,FROM_NONE 通道选项的值将会附加到缓冲区。
但是,如果创始者地址是一个非空字符串,则 FROM_FORMAT 通道选项的处理结果和 LINE_STOP 通道选项的值均会附加到输出缓冲区。
请注意,只有 USE_HEADER_RESENT 选项值为 1 时,才考虑 Resent-from: 和 Resent-sender: 标题行。否则,将忽略 Resent- 标题行。
如果 Subject: 标题行不存在或为空,则 SUBJECT_NONE 选项的值会附加到输出缓冲区。
否则,SUBJECT_FORMAT 选项的处理结果和 LINE_STOP 通道选项的值均会附加到输出缓冲区。
如果没有文本消息部分,则 NO_MESSAGE 通道选项的值会附加到输出缓冲区。
若有文本消息部分,则 CONTENT_PREFIX 通道选项的值就会附加到输出缓冲区。
非文本消息部分则被放弃。
对于每个文本部分,如果未达到 MAX_MESSAGE_PARTS 限制,则该文本部分就会被解码为 Unicode,并连同 LINE_STOP 通道选项的值一起附加到缓冲区。
然后,输出缓冲区的结果将从 Unicode 转换成 SMSC 的默认字符集或 UCS2 (UTF-16)。SMSC 的默认字符集是通过 SMSC_DEFAULT_CHARSET 选项来指定的。
转换完毕后,所得到的结果将被截断,以使之不超过 MAX_MESSAGE_SIZE 中设置的字节数。
然后,在电子邮件到 SMS 的转换过程中转换而得到的字符串将被分割成一条或多条 SMS 消息,其中任何一条 SMS 消息都不会长于 MAX_PAGE_SIZE 中设置的字节数。最多将生成与 MAX_PAGES_PER_MESSAGE 中所设置数量相同的 SMS 消息数。
由于一条电子邮件消息可能会有多个收件人,因此,可能需要对每个收件人地址都执行步骤 6 至步骤 8,这样将可以使用第 4 页的“将电子邮件定向到通道”中所述的 MAXLEN、MAXPAGES 或 PAGELEN 属性。
例如,使用通道的默认设置的电子邮件消息:
From: John Doe To: 1234567@sms.siroe.com Subject: Today’s meeting Date: Fri, 26 March 2001 08:17 |
The staff meeting is at 14:30 today in the big conference room.
将转换成 SMS 消息:
jdoe@siroe.com (Today’s meeting) The staff meeting is at 14:30 today in the big conference room.
如下所示的另一组选项设置:
CONTENT_PREFIX=Msg: FROM_FORMAT=From:${pa} SUBJECT_FORMAT=Subj:$s |
将会生成以下 SMS 消息:
From:John Doe Subj:Today’s meeting Msg:The staff meeting is at 14:30 today in the big conference room.