Catalyst::Plugin::Email::Japaneseでハマった
Catalyst::Plugin::Email::Japaneseを利用してメール送信する際に、Modelクラスから引いてきたShift-JISの文字列が文字化けしていた。
Template-Toolkitのカスタムフィルタで、Shift-JIS to UTF-8の変換をかけようと、下記サイトを参考に設定を試みたがうまくいかなかった。
へぼへぼCTO日記 - stash による検索結果 : 4件
(ThinkIT) 第5回:テンプレートの作成 (2/2) 設定はconfigオブジェクトにより、リスト15のようにアクセスできます。
Re: (Catalyst) Using a custom TT filter
Catalyst::View::TTでのフィルター作成時のメモ
Catalyst::View::TT::ForceUTF8に設定を握りつぶされる - holidays-l開発ブログ
クイック&ダーティなCatalystチュートリアル
use Template; - 今日のCPANモジュール
Template Toolkit Manual -テンプレートツールキット和訳マニュアル-
Template::Toolkit用独自フィルタを作る - ζ*’ワ’)ζ<うっうー遅レス。
Template Toolkit 使用時 に FILTER を追加する方法 - cooldaemonの備忘録
Template::Manual::Filters
で、結局いろいろトライ&エラーしてみた結果。
結論:
Catalyst::Plugin::Email::JapaneseはどうもMyApp::View::TTを使っていないワナ。
MyApp::View::TTとは別途FILTERSの設定が必要。
my %options = ( FILTERS => { 'sjis2utf8' => \&MyApp::View::TT::sjis2utf8, } ); # メール送信 $c->email( To => $To_field, # To => $c->stash->{'send_to'}, # Cc => $c->stash->{'send_cc'}, Subject => $title . '(#' . $c->req->args->[2] . ')', TmplOptions => \%options, );