[FuelPHP]メールの文字化け対策<改>

Posted 2012年9月14日 | Auther dada | Category PC・デジタル | Tag タグ: ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

以前 FuelPHPのメール文字化け対策の記事を書きましたが不完全でした。
今度こそ対策ができた(と思う)のでまとめたいと思います。

FuelPHPからメールを送ったら Gmailでは正常に読めたのに、携帯では文字化けしてしまったのでその対処法をメモしときます。
といってもまた場当たり的な対処な感じですが。

メール設定ファイル

参考:FuelPHP日本語ドキュメント

まずはメール設定をコピーします。
fuel/packages/email/config/email.phpfuel/app/config/email.php にコピー。

下記のように修正します。

//  'charset'    => 'utf-8',
    'charset'    => 'ISO-2022-JP',
//  'encoding'    => '8bit',
    'encoding'    => '7bit',

全体設定ファイル

fuel/app/config/config.phpを編集します。

    /**
     * Localization & internationalization settings
     */
    'language'           => 'ja',
    'language_fallback'  => 'ja',
    'locale'             => 'ja',
    'default_timezone'   => 'Asia/Tokyo',

コントローラー

送信するコントローラークラスに下記を追加します。
場所はメール送信部分の前ならどこでもいいのかな? 自分は before() の中に書きました。

Package::load('email');

そして肝心の送信部分。

$mailbody = 'メール本文だよ!\アッカリーン/';
$mailbody = mb_convert_encoding( $mailbody, 'ISO-2022-JP' );

$subject = 'メール題名だお';
$subject = mb_encode_mimeheader( $subject, 'ISO-2022-JP' );

$name = '謎の変態紳士';
$name = mb_encode_mimeheader( $name, 'ISO-2022-JP' );

$email = Email::forge();
$email->from( 'hoge@mail.com', $name );
$email->to( 'foo@mail.com' );
$email->subject( $subject );
$email->body( $mailbody );
$email->send();

仕様通りに表示してくれると評判の Mozlla Thunderbirdでも表示できたので大丈夫じゃないかと。多分。

参考サイト

PHPで正しく日本語メールを送る方法 - くじらぶろぐD
≫FuelPHPのFieldsetでEメール送信 | WinRoad徒然草
≫EMXAS IT工房 ? 文字化けのしくみ(その1)携帯とPCとのメールやりとりで起こる文字化け
≫れぶろぐ - [PHP] mb_convert_encoding 関数の ISO-2022-JP と JIS の違い

関連する記事

No Comments »

No comments yet.

Leave a comment

カテゴリー