Zend_Mailを日本語対応にする
何かと便利なZend_Mail*1ですがデフォルトで日本語対応してないので文字化けします。
手動でエンコードするのも面倒なので、ラッパーして勝手に日本語にしてくれるようにしました。
<?php Zend_Loader::loadClass( 'Zend_Mail' ); class Toytools_Mail extends Zend_Mail{ function __construct(){ parent::__construct('ISO-2022-JP'); } function setBodyText( $txt , $charset = null , $encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE ){ parent::setBodyText( mb_convert_encoding($txt, 'ISO-2022-JP', mb_detect_encoding($txt)) , $charset , $encoding ); } function setSubject( $txt ){ parent::setSubject( mb_convert_encoding($txt, 'ISO-2022-JP', mb_detect_encoding($txt)) ); } } ?>
以下テスト
<?php Zend_Loader::loadClass( 'Toytools_Mail' ); $mail = new Toytools_Mail( ); $mail->setBodyText( "日本語ボディー" ); $mail->setSubject( "サブジェクト" ); $mail->setFrom( 'from@hoge.com' ); $mail->addTo( 'to@hoge.com' ); $mail->send();