PHPはテンプレートを使用してメールスタイルを管理する


弟がphpに触れた3日目、会社はメールのモジュールを作ります.プロジェクトで使用するphpフレームワークはzend frameworkです.しかし、ネット上で見た例では、htmlスタイルのメールを送るには、htmlコードをすべて文字列に含まなければならない.このように修正すると、メールのレイアウトをプレビューすることができません.メールテンプレートを直接書くことができれば、送信時にそのテンプレートを呼び出し、システムがテンプレートをレンダリングして最終的なメールを得ることができます.そこで自分でこの機能を書いてみました.まずメール送信機能を作成する
class SendMailTool extends Zend_Mail_Transport_Smtp {

    protected $mail;

    protected $transport;

    public function __construct($smtpserver = 'smtp.hgsamerica.com', $username, $password) {

        $config = array (
            'auth' => 'login',
            'username' => $username,
            'password' => $password
        );
        $this->transport = new Zend_Mail_Transport_Smtp($smtpserver, $config);

    }

    /**
     *          
     */
    public function sendMail($to, $toname, $from, $fromname, $title, $contant) {
        $this->mail = new Zend_Mail("UTF-8");
        $this->mail->setDefaultTransport($this->transport);
        $this->mail->addTo($to, $toname);

        $this->mail->setBodyHtml($contant);
        $this->mail->setFrom($from, $fromname);

        $this->mail->setSubject("=?UTF-8?B?" . base64_encode($title) . "?=");
        $this->mail->send();
    }
//    ,        
    private function loadVM($vmname, $config = Array ()) {

        $contant = '';
        $file = fopen("mailtemplates/" . $vmname, "r");
        while (!feof($file)) {
            $line = fgets($file);
            while (strpos($line, "{\$") > 0) {
                $counts = strpos($line, "{\$");
                $counte = strpos($line, "}");
                $substr = substr($line, $counts +2, $counte - $counts -2);
                $line = str_replace("{\$" . $substr . "}", $config[$substr], $line);
            }
            $contant .= $line;
        }
        return $contant;

    }

    /**
     *       
     */
    public function sendVMMail($to, $toname, $from, $fromname, $title, $config, $vm) {
        $this->sendMail($to, $toname, $from, $fromname, $title, $this->loadVM($vm, $config));
    }
 
テストテンプレート
<table>
    <tr>
        <td>
            please input your inf
        </td>
    </tr>
    <tr>
        <td>
            name:{$user}
        </td>
    </tr>
    <tr>
        <td>
            password:{$password}
        </td>
    </tr>
</table>
 
テストコード
        $config = array (
            'user' => 'huling',
            'password' => '123456'
        );
        $mail = new SendMailTool('smtp.xxxx.com', 'huling', 'aqsdsadsad');

        $mail->sendVMMail('[email protected]', 'live', '[email protected]', 'work', 'askjdkas',   $config,'test.html');
    }
 
以上のコードが完了しました.テンプレートを介してメールを送信します.メールのスタイルを変更するには、メールのテンプレートを変更するだけです.phpに触れたばかりなので、phpでは以上の機能が実現しているコードなのかわかりません.あるいはより良い解決策がありますか?レンガを投げて玉を引くことを望んでいます.