メール送信時の文字化け

大ハマリしたので忘れないうちにメモ

CodeIgniter の Email クラスを使ったメール送信時、Subject, From の所が文字化けする。

原因

system/libraries/Email.php

public function subject($subject)
{
    $subject = $this->_prep_q_encoding($subject); # ここ
    $this->_set_header('Subject', $subject);
    return $this;
}

prep_q_encoding がなにやら悪さしてるらしい
コメントアウトしたら文字化けがなくなった。

メモ

メールを送るときに使うかもしれない php 関数

mb_language('ja');
mb_internal_encoding('UTF-8');

$subject = mb_encode_mimeheader($subject, "UTF-8", "B");
$message = mb_convert_encoding($message, "UTF-8");
  • 文字コードはすべて統一するのが無難。(メーラーによっては頑張ってくれるので文字化けしないことも)
  • 文字コードはISO-2022-JPでもいいんじゃないかすら