↑咁多位大人, 睇我個BLOG之餘, 幫我禁下廣告丫, 我好窮耶↑

星期日, 6月 03, 2007

WordPress Mail 補完計劃 « 無聊人的無聊故事 - 站長有兩隻,搭訕前請先認明

WordPress Mail 補完計劃 « 無聊人的無聊故事 - 站長有兩隻,搭訕前請先認明

WordPress Mail 補完計劃
— by C.H.Weng @ 6:16 下午

緣起

由於目前各家郵件軟體與網頁郵件系統對 UTF-8 編碼的郵件普遍都沒有辦法處理得很好,導致由 WordPress 發出的通知郵件很容易出現亂碼的情況,雖然不是什麼大問題,但總還是希望能修正這樣的不完美。
在研究了幾天後,我整理了兩個目前比較常用的解決方式,各有各的優缺點,雖然還沒辦法做到 100% 完美,但是至少已經有不錯的改善了!

原理介紹

修正 header 與 subject

第一個方法,就是修正郵件本身的 header、subject 以及內容,使大多數的郵件軟體與網頁可以正確讀取。
這方法雖然不錯,但是因為考慮到還有一些系統沒有完全支援 UTF-8,容易產生一些預期之外的狀況。因此,除非你很執著一定要採用 UTF-8 編碼,不然不建議用這個方式修正。
由於不易掌握送到 wp_mail 這個函式的資料型式,因此這個方法可能還有一些盲點存在。不過至少 WordPress 本身用到關於寄信的功能、以及 WP-DB-BackupSpam Karma 2 等等外掛都能正常運作。
如果你有發現任何不相容的狀況,歡迎多多跟我回報。

將信件轉為 Big5 編碼

這是詢問過一些前輩所得到的心得。
目前常見的各大論壇,為求最大相容性,就算論壇本身是 UTF-8 編碼,在寄發郵件的時候,還是將郵件內容轉成 Big5 編碼來寄送。
這方法較前一個的相容性好上許多,缺點就是沒辦法兼顧到 UTF-8 多語系並存的特色,而且伺服器本身必須有 iconv 功能,才能進行轉換。
這邊我一樣直接對 wp_mail 函式下手,這樣處理過後,凡是藉由這個函式送出的郵件,就全部都是 Big5 編碼的形式了。

實作方法

剛開始接觸 WordPress 的時候,我也老愛對主程式的 code 動手動腳,不過幾次不大不小的升級與系統轉換下來,發現這樣實在是太累人了!不僅事倍功半,還很容易有漏改的情況出現。
後來我發現 WordPress 裡提供 my-hacks.php 這個檔案,讓使用者可以自訂某些函式。當然前提是主程式必須有寫成允許你自己重寫這個函式,而很幸運地,我想改的 wp_notify_postauthor 和 wp_mail 都在支援之列!
對了,在修改前,你當然必須得先啟用 my-hacks.php。方法是到控制台的“Options » Miscellaneous”中,將“Use legacy my-hacks.php file support”打勾後確定。
接著,就是要編輯 my-hacks.php 這個檔案了。這個檔案應該要放在 WordPress 的主目錄下,如果沒有這個檔案的話,自己新建一個就可以了。
如果你想採用第一種做法,請下載 wp-mail2utf8.txt,將內容複製到 my-hacks.php 後存檔。
如果你想用第二種做法,請下載 wp-mail2big5.txt,將內容複製到 my-hacks.php 後存檔。再次強調,使用這個方法,必須要有 iconv 功能才可以,如果沒有的話將不會進行任何轉換動作!
改好以後就大功告成了,發個郵件試試看吧!
p.s. 其實這個功能可以寫成 plugin 啦!不過我懶…覺得這樣就很夠用了……

0 Comments:

發佈留言

<< Home