php yii如何生成tpl文件,通过模板渲染邮件内容

邮件 - 通过模板渲染邮件内容 ¶

作者:KK

发表日期:2016.9.7

发邮件时要调用email对象的setHtmlBody设置一些HTML代码来表达漂亮的邮件排版内容,可是一封真正能给用户看的邮件岂止这丁点HTML内容呢,绝对是一大坨的,肯定不方便写在调用邮件的PHP源代码里了

我们可以设置一个邮件的模板,编写下HTML代码让它来读取这个些作为邮件内容

先给mailer组件配置htmlLayout属性为一个layout模板(和视图的layout一样,中间放个echo $content)

先在@app/views/mail目录下增加一个test.php文件作为邮件内容模板,里面写上你的测试HTML内容,接着创建邮件实例时就传入模板参数即可,这样:

$email = Yii::$app->mailer->compose('@app/views/mail/test'); //省略PHP文件后缀

完整示例:

$email = Yii::$app->mailer->compose('@app/views/mail/test');

$email->setTo('接收者的邮箱');

$email->setSubject('学习发邮件用的');

Yii::$app->mailer->send($email);

这个就不需要调用setHtmlBody了,因为上面compose构建邮件时就已经通过指定的模板渲染出HtmlBody了

其实那个compose方法传入模板名称的话,就像控制器的render方法一样把指定模板渲染后得到HTML字符串

但是你收到邮件后会发觉,好像除了你的测试内容以外还有别的HTML呀,比如一些页脚链接之类的

其实它根本就像控制器render一样,渲染完你指定的模板后,它又将你的模板内容套到一个layout里了,这个layout就在mailer组件配置的htmlLayout属性里面配置了

你可以看看配置文件所配置的值指向了哪个layout

而另外你会发现mailer组件还有个textLayout属性,这里暂时不解释这个,当你想发送纯文本邮件的时候再自行深入学习Yii官方的邮件教程吧(某些邮件阅读器会将HTML内容过滤掉,或者读取纯文本显示)

将变量传给模板 ¶

也是和render方法一样,第二个参数传入一个数组,key就是模板里的变量名,value就是变量的值,如下:

$email = Yii::$app->mailer->compose('@app/views/mail/test', [

'var1' => '小明',

'var2' => '玩具车',

]);

然后模板里大概就是

<?php echo $var1; ?> 同学你好!

恭喜你获得奖品 <?php echo $var2; ?> 一个!奖品已寄出,请注意查收哦!

渲染模板时不使用layout ¶Yii::$app->mailer->htmlLayout = false;//通过赋值为false表示不使用layout渲染

$email = Yii::$app->mailer->compose('@app/views/mail/test', [

'var1' => '小明',

'var2' => '玩具车',

]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值