[PHP-users 20795]Re: smartyテンプレートをメモリーから読み込む 出力をメモリーに読み込む

shin ohira shin @ ohira.com
2004年 3月 15日 (月) 09:57:19 JST


>その出力結果をWEBブラウザーではなく変数$bodyに受け取り、
>mail("送り先","件名",$body);
>のようにメールを送信したいと考えております。

同じような処理をしていますので、参考になるかもしれませんのでメールします。



CSV からデータを読み込んで、メールする処理にSmartyを使っております。

<?

require_once("FastTemplate/class.FastTemplate.php") ;

mb_language("ja") ;

mb_http_output('JIS');

global $tpl ;

$tpl = new FastTemplate("./");

$tpl->define(
        array(
                "subject"       => "subject.txt" ,
                "body"          => "body.txt" ,
                "head"          => "head.txt"
        )
) ;

$fp = fopen("./ss.csv","r");

$tag = fgetcsv($fp, 1000, ",") ;
$num = count($tag) ;

while($data = fgetcsv($fp, 1000, ",")) {

    for($i=0; $i < $num; $i++) {
        if($data[$i] === "#") {
                $data[$i] = sprintf("\n"); ;
        }
        $tpl->assign("$tag[$i]" , $data[$i]) ;
    }

    $to = trim($tpl->get_assigned("__MAIL__"));

    $tpl->parse("SUBJECT", "subject") ;
    $subject = $tpl->fetch("SUBJECT") ;

    $tpl->parse("BODY", "body") ;
    $body = $tpl->fetch("BODY") ;

    $tpl->parse("HEAD", "head") ;
    $head = $tpl->fetch("HEAD") ;

    mb_send_mail( $to, $subject, $body, $head) ;

    printf("$to\n");
}

fclose($fp);

?>

>【テンプレート出力の結果をメモリーに受け取る】
>前述の
>$smarty->display("テンプレートファイル名");
>を行うことにより通常WEBブラウザーに出力が送信されると思いますが、
>その出力を変数に取り込みたいと思います。
>用途としましては、例えば動的なメールを作成するに当たりSmartyを利用した場合、
>その出力結果をWEBブラウザーではなく変数$bodyに受け取り、
>mail("送り先","件名",$body);
>のようにメールを送信したいと考えております。
>
>以上のような使用方法多々あると思いますが、私の調べる限りでは情報を見つけるこ
>とが出来ませんでした。
>お手数ですが、ご存知の方いらっしゃいましたら教えていただければと思います。


PHP-users メーリングリストの案内