読者です 読者をやめる 読者になる 読者になる

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();

*1:Pear::Mailの後継のようなものだと思ってください