ZendFramework1.5.2から現状不足している機能がなかったので、
そのままバージョンアップしてなかったんですが、今回Zend_Dateの日付計算で
不具合が出たので、最新の1.7.5にバージョンアップしました。
嬉しかった点は、Zend/Mail.phpの中身を編集しなくても
文字化けをしないように設定できるようになった部分。
これをやるのがおっくうでバージョンアップしてなかったのもあったので。
こんなふうにsetEncodingOfHeadersでbase64を指定できるようになってました。
public static function sendInfo($params)
{
$mail = new Zend_Mail('ISO-2022-JP');
$mail->setEncodingOfHeaders(Zend_Mime::ENCODING_BASE64);
$mail->setBodyText(self::_encode(trim($params['body'])),
null,
Zend_Mime::ENCODING_7BIT)
->setSubject(self::_encode($params['subject']))
->setFrom('yyyy@yyyy', 'zzzz');
->addTo('xxxx@xxxxxx');
->send();
}
private static function _encode($str)
{
return mb_convert_encoding($str, 'ISO-2022-JP', 'UTF-8');
}
少しはまったのが、Zend_Date。new Zend_Date(‘xxxx-xx-xx’)とやると
クラスを生成できてたのですが、Localeがうまく取得できなくなっているようでした。
以前、ソースをおったときは、ブラウザから情報を取得していたし、
今回ざっと見た時もそれっぽい部分があったのですが、なぜかLocaleでエラーになります。
Zend_Registryを使って、’Zend_Locale’に’ja_JP’を設定しておけば、
設定したLocaleを利用してくれるので、index.phpで設定して問題を回避しました。
ソースをちゃんと見たいところですが、今は問題解決が先です。