|
留言版的機制,幾乎是每個企業網站都會設置的一項機制。 用來接收客戶的需求訊息,然而客戶留了言之後,系統可以自動將訊息郵寄給相關的工作人員。 郵件傳送乍聽之下應該是沒有什麼困難,然而真正在撰寫的過程中,卻是處處碰壁。 問題在於編碼的問題 .. 現在各大網站幾乎都是以 utf-8 在編碼 ,資料庫也是,為的是讓整個系統可以不坐大幅度的修正,就可以支援各種語系的文字。 然而郵件系統卻不這麼聰明 … 特別是 hotmail … 中文系統的 hotmail .. 僅支援 Big5. 要是你的郵件是以 utf-8 編碼的 … 寄到 hotmail 信箱鐵定看不見內容 .. 簡直就是鬼畫符. 以下說明奮戰兩天的成果 .. 真可謂不屈不撓 .. 屢敗屢戰 .. 奮戰不懈 .. 嘔心瀝血 . 先說明一下系統環境 .. 1. 網頁編碼─> utf-8 2. 資料庫編碼 -> utf8 3. 發送郵件編碼 -> big5 在程式的運作過程 .. 發送郵件的程式碼是在最末段 .. 也就是當留言訊息等內容寫入資料庫之後所引發的動作。 but .. 這時候程式內所接收到的資料 .. 已經完全是 utf8 編碼的資料了 .. 為了要依照我們的需求 - 產生 big5 編碼的郵件 . 這時就必須要轉碼。 就是這個轉碼的函示 . mb_convert_encoding($body,$email_charset,$web_charset); 有哪些地方要轉碼? 1. 寄件者名稱 . 2. 收件者名稱. 3. 郵件主旨. 4. 郵件本文. 拿上面那個轉碼函示來說 .. $body 就是我們所要轉碼的內容 , $email_charset 是我們要發送郵件的編碼. $web_charset 是目前網站所採用的編碼為何? 拿我自己來說 .. 我現在要把 $body 這個郵件內容轉成 big5 .. 且我的網站是採用 utf-8 編碼 .. 這時候我的程式就要這樣子寫: $email_charset = “big5″; $web_charset = “utf-8″; $body = mb_convert_encoding($body,$email_charset,$web_charset); 其餘的寄件者 、收件者、主旨 .. 就依樣畫葫蘆了。 Post a comment
|