2009年12月24日木曜日

Zend_Mailの文字化け対策

Zend_Mailは非常に便利ですが、全角の送信者名や受信者名が文字化けします。
原因は、 送信者名や受信者名をUTF-8からISO-2002-JPに変換した後、それをsetFrom及びaddTo関数の引数として渡すことにより生じています。
setFrom,addTo関数では、その内部で_filterName関数によりサニタイジングしていますが、その内容は
protected function _filterName($name)
{
$rule = array("\r" => '',
                  "\n" => '',
                   "\t" => '',
                   '"'    => "'",
                   '<' => '[',
                   '>' => ']',
        );
       return trim(strtr($name, $rule));
}

ですので、ISO-2002-JPでは、バケバケ文字の出来上がりとなります。
とりあえず、送受信者名のサニタイジングは事前に自前で処理し、 _filterNameはコメントアウトして文字化け対策は完了です。

0 件のコメント:

コメントを投稿