[Codeigniter-users] Emailヘルパーの日本語の扱いについて

Zurück zum Archiv-Index

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




Codeigniter-users メーリングリストの案内
Zurück zum Archiv-Index