2019年9月16日(月) 07:05 JST

jpmailプラグイン公開

  • 投稿者:
  • 表示回数 4,802
プラグイン

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

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

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

そんなこんなで自分のようなホビープログラマには荷が重いが,ないよりはましだろうと思って,jpmailプラグインを作成した。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 プラグイン