PHP运用模板管理邮件样式

php中文网
发布: 2016-06-13 10:55:23
原创
1266人浏览过

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>
登录后复制
?



?测试代码

AiPPT模板广场
AiPPT模板广场

AiPPT模板广场-PPT模板-word文档模板-excel表格模板

AiPPT模板广场 147
查看详情 AiPPT模板广场
        $config = array (            'user' => 'huling',            'password' => '123456'        );        $mail = new SendMailTool('smtp.xxxx.com', 'huling', 'aqsdsadsad');        $mail->sendVMMail([email&#160;protected]', 'live', [email&#160;protected]', 'work', 'askjdkas',   $config,'test.html');    }
登录后复制
?



?以上的代码完成了通过模板发送邮件。修改邮件的样式只需要修改邮件的模板。

由于是刚刚接触php,不知道php中是不是已经实现了以上功能的代码?或者是否有更好的解决方案?希望能抛砖引玉。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号