mb_encode_mimeheader()で文字列を変換する際は、事前にmb_internal_encoding()にてエンコードを統一しておかなければならない。
ということで以下のような処理が必要になる。
※メール送信クラスより引用
protected function mem($var) {
// 関数の存在チェック
$internalEncoding = function_exists('mb_internal_encoding');
if($internalEncoding) {
// 現在のエンコード設定を保存
$restore = mb_internal_encoding();
// 変換したい文字エンコードを設定
mb_internal_encoding('UTF-8');
}
// 文字列を変換
$return = mb_encode_mimeheader($var, 'UTF-8', 'B');
// 処理後、変更していた文字コードを戻す
if($internalEncoding) mb_internal_encoding($restore);
// 値を返却
return $return;
}
mb_encode_mimeheader()第3引数の’B’は「Base64」エンコードという意味。
‘Q’を指定すると「Quoted-Printable」になる。
デフォルトは’B’。
まぁ実際、関数の存在チェックまではやらなくてもいいと思う(適当)。