Codeigniterで、長い件名のメールを送信する際の文字化け対策。

PHPフレームワークで、今時Codeigniter(以下CI)を使っている人も少ないかと思いますが、まだPHP5.3必須なFuelPHPに乗り換えられずに悶々しているモトヲです、こんにちは。

で、CIのEmailヘルパーを使ってメールを送信する場合、長い件名だと文字化けしちゃうんですよね。
ずっと見てみぬフリしてた、というか「短い件名で設定してください」てな上からなお願いをしてたんですけど、対策を練ってみました。

以下ソース。

application/librariesディレクトリにMY_Email.phpというファイルを作成。内容は以下のとおり。

_prep_q_encoding($subject);
		
		$CI =& get_instance();
		
		mb_internal_encoding($this->charset);
		$subject = mb_encode_mimeheader($subject, $this->charset, 'B', $this->crlf);
		mb_internal_encoding($CI->config->config['charset']);
		
		$this->_set_header('Subject', $subject);
		return $this;
	}

	private function _set_header($header, $value)
	{
		$this->_headers[$header] = $value;
	}
}
// END MY_Email class

/* End of file MY_Email.php */
/* Location: ./application/libraries/MY_Email.php */

元々の_prep_q_encodingという関数が訳のわからんことをやってんのよね〜。

以上備忘録でした。

CodeIgniter徹底入門
CodeIgniter徹底入門

posted with amazlet at 12.10.18
河合 勝彦 鈴木 憲治 安藤 建一
翔泳社
売り上げランキング: 148893

スポンサードリンク