最新のFuelPHP(自分がソースを見たのは1.5.1です。)のEmailパッケージを使ってエンコードがISO-2022-JPのメールを送る場合、subjectはmb_encode_mimeheaderしなくてよいです。
前提はemail.phpの設定を以下のようにしている場合です。
前提はemail.phpの設定を以下のようにしている場合です。
return array(
'defaults' => array(
'defaults' => array(
中略
'charset' => 'ISO-2022-JP',
'encodeing' => '7bit',
中略
);
);
本やWebのドキュメントを見ながら「ISO-2022-JPでメールを送りたい」設定すると、上記のように設定するかなと思います。
その後、古いドキュメントを見てしまうと、メールを実際に送信する部分のソースは以下のように書かれていると思います。
※早川聖司 (2012) FuelPHP入門 株式会社ソーテック社も該当します。
本やWebのドキュメントを見ながら「ISO-2022-JPでメールを送りたい」設定すると、上記のように設定するかなと思います。
その後、古いドキュメントを見てしまうと、メールを実際に送信する部分のソースは以下のように書かれていると思います。
※早川聖司 (2012) FuelPHP入門 株式会社ソーテック社も該当します。
$email = Email::forge();
$email->from( 'foo@example.com', 'foo' );
$email->to( 'bar@example.com' );
$email->subject( mb_encode_mimeheader( '題名', 'ISO-2022-JP' ) );
$email->body( mb_convert_encoding( '内容', 'ISO-2022-JP' ) );
$email->send();
FuelPHP1.5のEmailパッケージのソース(\package\email\driver.php)にsubject関数は以下のように書いてあります。
※FuelPHPでメール送信(smtp) : てるてる坊主によると、FuelPHP1.2からmb_encode_mimeheaderが不要になったようです。
FuelPHP1.5のEmailパッケージのソース(\package\email\driver.php)にsubject関数は以下のように書いてあります。
public function subject($subject)
{
if ($this->config['encode_headers'])
{
$subject = $this->encode_mimeheader((string) $subject);
}
$this->subject = (string) $subject;
return $this;
}
エンコードはsubject関数がやってくれますので、以下のように書くのが正解です。
エンコードはsubject関数がやってくれますので、以下のように書くのが正解です。
$email = Email::forge();
$email->from( 'foo@example.com', 'foo' );
$email->to( 'bar@example.com' );
$email->subject( '題名' );
$email->body( mb_convert_encoding( '内容', 'ISO-2022-JP' ) );
$email->send();
※FuelPHPでメール送信(smtp) : てるてる坊主によると、FuelPHP1.2からmb_encode_mimeheaderが不要になったようです。