Kenji
kenji****@club*****
2008年 3月 20日 (木) 16:10:52 JST
Kenji です。 On Thu, 20 Mar 2008 15:16:47 +0900 "Takeshi Amano" <p****@takes*****> wrote: > 天野です。 > > 今Emailライブラリを使ってメール送信をするコードを書いています。 > Kenjiさん作成(感謝!!)の日本語用のパッチをあてて書いていま > すが、未だにコードに以下の様にmime headerをエンコードしないと > 到着したのメールのsubjectやmessageが文字化けを起こしてしまい > ます。 > > このコードの入っているファイルの文字コードはUTF8です。 > > $email_title = mb_convert_encoding('あまのたけし', 'JIS', 'UTF-8'); > $this->email->from('norep****@examp*****', > mb_encode_mimeheader($email_title, 'JIS')); > $this->email->to('amano****@examp*****'); > > $subject = mb_convert_encoding('メールタイトルです', 'JIS', 'UTF-8'); > $message = mb_convert_encoding('メールの中身です', 'JIS', 'UTF-8'); > $this->email->subject(mb_encode_mimeheader($subject, 'JIS')); > $this->email->message($message); > > $this->email->send(); > > と何重にもエンコードをかけなければならずなかなか面倒です。 ヘッダは、以下のように、 $from_name = mb_encode_mimeheader($from_name, 'ISO-2022-JP', 'UTF-8'); $subject = mb_encode_mimeheader($subject, 'ISO-2022-JP', 'UTF-8'); 本文は、以下のように、 $body = mb_convert_encoding($body, 'ISO-2022-JP', 'UTF-8'); すれば、よいはずです。二重にかける必要はありません。 > これって > 日本語版のEmailライブラリの中に入れてしまうことはできないでしょうか? 日本独自ということなら可能ですが、本家にフィードバックという点から は、問題があるんじゃないかと思います。 > それとメールはJISで送るもんだと前から言われていますが、UTF8で送った > 場合まだ携帯とかだと文字化けしてしまうんでしょうか? 携帯では、化けるものもありましたね。 PC では、ほとんどないように思いますが。 // Kenji