YII发送邮件配置详解

关注我的微信公众号,更多文章推送不遗漏:
在这里插入图片描述

1、概要

本文主要介绍三个方向的邮件应用:

  • 发纯文本邮件;

  • 发附件;

  • 利用email视图文件模板发送带图片的html格式邮件;

2、邮件配置

要使用Yii发送邮件,就需要有一个可以发邮件的邮箱,此处我用的是新浪邮箱,大家也可以用自己公司的邮箱,不过需要确保可以使用smtp发送邮件,建议在foxmail上测一下是否可用。

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    'viewPath' => '@common/mail',
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        'host' => 'smtp.sina.com',
        'username' => 'chenzhiweiwk@sina.com',
        'password' => 'xxxxxx',
        'port' => '465',
        'encryption' => 'ssl',
    ],
    'messageConfig' => [
        'charset' => 'UTF-8',
        'from' => ['chenzhiweiwk@sina.com' => 'PHP神灯'],
    ],
],

3、发送邮件

发送邮件的代码如下:

Yii::$app->mailer->compose()
    ->setFrom('chenzhiweiwk@sina.com') //来自哪里
    ->setTo('chenzhiweiwk@sina.com')   //去往哪里	
    ->setSubject('Test')				//邮件主题
    ->setTextBody('Hello World')		//邮件内容
    ->send();

发送效果如下:
在这里插入图片描述

3.1 发送附件
Yii::$app->mailer->compose()
    ->setFrom('chenzhiweiwk@sina.com') //来自哪里
    ->setTo('chenzhiweiwk@sina.com')   //去往哪里	
    ->setSubject('Test')				//邮件主题
    ->setTextBody('Hello World')		//邮件内容
    ->attach('/app/README.md')			//附件所在路径
    ->send();
3.2 展示图片

如果要在邮件中展示图片的话,最好用加载视图文件的方式。YII允许我们指定自己的视图文件,一个视图文件就是email正文的html模板,我们可以给模板传递相关参数实现正文的编写,YII默认提供了一些email的视图文件,在/common/mail/目录下。

我们在/common/mail/目录下创建一个email模板文件:

root@85b2502a9a48:/app# cat /app/common/mail/showImage.php 
<?php
use yii\helpers\Html;

/* @var $this yii\web\View */
/* @var $user common\models\User */

?>
<div class="verify-email">
    <img src="<?=$imagePath?>" />
</div>

使用如下代码发送邮件:

Yii::$app->mailer->compose('showImage', [
        'html' => 'showImage',
        'imagePath' => 'https://img2.baidu.com/it/u=1518761123,2660003829&fm=26&fmt=auto&gp=0.jpg'
    ])
    ->setFrom('chenzhiweiwk@sina.com') //来自哪里
    ->setTo('chenzhiweiwk@sina.com')   //去往哪里	
    ->setSubject('Test')				//邮件主题
    ->setTextBody('Hello World')		//邮件内容
    ->attach('/app/README.md')			//附件所在路径
    ->send();

compose()的第一个参数指定邮件视图文件的文件名,第二个参数是一些配置,如下:

  • 'html' => 'showImage':表示使用html模板,而不使用纯文本模板;
  • 'imagePath' => 'https://img2.baidu... ...':把图片路径传递到视图文件中。

邮件收到的效果如下:
在这里插入图片描述

4、注意要点

由于发邮件比较耗时,尤其是邮箱提供商(如:sina)业务繁忙的时候尤其严重,因此最好是放到队列中执行,否则系统会卡死。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值