Zend_Mail で半角カナを送信する方法
携帯電話向けに、どうしても件名と本文に半角カナを入れる必要があり、数時間格闘したら、ようやく Zend_Mail で半角カナを送信することができました。
ドコモ、au、ソフトバンクで文字化けしないことを確認しました。Zend Framework のバージョンは、1.7.5 です。
sub send_mail($params = array()) { // subject $subject = mb_convert_encoding($params['subject'], 'JIS', 'SJIS'); // body $body = mb_convert_encoding($params['body'], 'JIS', 'SJIS'); // from_name if ( isset($params['from_name']) ) { $params['from_name'] = mb_encode_mimeheader( mb_convert_encoding($params['from_name'], 'ISO-2022-JP', 'SJIS'), 'ISO-2022-JP' ); } else { $params['from_name'] = null; } // to_name if ( isset($params['to_name']) ) { $params['to_name'] = mb_encode_mimeheader( mb_convert_encoding($params['to_name'], 'ISO-2022-JP', 'SJIS'), 'ISO-2022-JP' ); } else { $params['to_name'] = null; } // send!! $mail = new Zend_Mail( 'ISO-2022-JP' ); $mail->setBodyText( $body, 'ISO-2022-JP', Zend_Mime::ENCODING_BASE64 ); $mail->setFrom( $params['from'], $params['from_name'] ); $mail->addTo( $params['to'], $params['to_name'] ); $mail->setSubject( $subject ); $mail->send(); }
Zend_Mail で日本語を使うためには、かなりバッドノウハウの塊なところがあるので、どこかで情報を共有したいですね。