jpmailプラグイン公開

投稿者: mystral-kk 2007年3月18日(日) 15:47 JST

Geeklog-1.4.1ではメールの文字コードがUTF-8になってしまい,サーバーの環境やメーラによっては文字化けするケースが出てきた。特にhotmailでは顕著なようだ。

lib-common.phpのコードを読んでみると,マルチバイト文字を含むメールのヘッダや本文はUTF-8でエンコードされる仕様になっている。ある意味,強引な仕様だ。

この状況を改善すべく文字コードやメールの勉強を始めたが,なかなかややこしい。「t_komuraの日記」[*1] を読むと,文字コード変換はPHPのバージョンによって対応の仕方が違うし,「超極める!PHP」[*2] の上鍵さんの記事を読むと,日本語のメールを正しく送るのは至難の業であることがよくわかる。さらにこの記事[*3] を読むと,PHPと文字コードの関係について自分がいかに無知だったかを思い知らされる。

そんなこんなで自分のようなホビープログラマには荷が重いが,ないよりはましだろうと思って,jpmailプラグイン[*4] を作成した。GeeklogがUTF-8にエンコードしたヘッダや本文をデコードし,ISO-2022-JPでエンコードするだけなのだが,PHPのmb_detect_encoding()やmb_encode_mimeheader()を使わないで実装するのはかなりややこしい。

結局,エンコーディングの検出はNucleusに含まれているmb_emulatorを使い,行の折りたたみやコメントの処理は「超極める!PHP」の記事を参考にした。

XREA(PHP-5.1.4, MySQL-5.0.22)とノートPC(Windows XP PRO, PHP-5.2.1, MySQL-4.0.18)の環境では動作しているし,hotmail宛でも文字化けしていない。他の環境でもうまく動作すればよいのだが...

タグ:jpmail プラグイン

コメント (2件)


Geeklog増殖計画 - jpmailプラグイン公開
https://mystral-kk.net/index.php/article/jpmail

[*1] http://d.hatena.ne.jp/t_komura/20051105
[*2] http://www.kiwameru-php.net/
[*3] http://hain.jp/index.php/tech-j/2007/02/13/p125
[*4] http://www.geeklog.jp/article.php/jpmail