為了將電子郵件傳送至遠端網站,必須將電子郵件轉換成遠端 SMSC 可以理解的 SMS 郵件。本節說明將在 SMS 通道上已形成佇列的電子郵件轉換成一封或多封 SMS 郵件的程序。如下所述,可以使用選項來控制 SMS 郵件產生的最大數量、這些 SMS 郵件的最大總長度以及任一封 SMS 郵件的最大大小。只有電子郵件的文字部分 (即 MINE 文字內容類型) 會被使用,被轉換部分的最大數量也會受到控制。
電子郵件的標頭行和文字部分中使用的字元集全部都會轉換成 Unicode,然後再轉換成適當的 SMS 字元集。
當不存在 SMS_TEXT 對映表 (請參閱網站定義的文字轉換) 時,佇列至 SMS 通道的電子郵件會接收到處理,如圖 D–2 中所述。
以下步驟與圖 D–2 中編號的方塊相對應︰
開始時是一個空白的輸出緩衝區。緩衝區使用的字元集為 Unicode。
電子郵件的創建者位址可以取自以下五種來源之一,這些來源依優先順序由高到低顯示:
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_MESSAGESMS 郵件。
由於一封電子郵件可能有多位收件者,可能需要對每個收件者位址都執行步驟 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 |
則會產生:
From:John Doe Subj:Today’s meeting Msg:The staff meeting is at 14:30 today in the big conference room.