Yii2之mailer的使用

    Mailer组件是yii框架自带的用于收发邮件的组件,无需安装,只需做一些配置即可使用,非常便捷。本文就mailer组件从配置到使用进行简单讲解。

    首先在config/main.php配置如下:

return [
	 ‘components‘ => [
		  ‘mailer‘ => [
			   ‘class‘ => ‘yii\swiftmailer\Mailer‘,
			   ‘viewPath‘ => ‘@common/mail‘,
			   ‘useFileTransport‘ => false,
			   ‘transport‘ => [
					‘class‘ => ‘Swift_SmtpTransport‘,
					‘host‘ => ‘smtp.qq.com‘,//服务器根据不同邮箱类型而定,这里以qq邮箱为例
					‘username‘ => ‘[email protected]‘,//发送者邮箱地址
					‘password‘ => ‘vwwujuntianwefwefa‘,//SMTP密码
					‘port‘ => ‘25‘,
					‘encryption‘ => ‘tls‘
			]
		]
	]
];

这里要选择一个邮箱作为发送方,其中username设置发送方邮箱地址,可以在config/params.php文件中配置一个supportEmail参数指定为这个邮箱地址,

下面直接使用Yii::$app->params[‘supportEmail‘]来表示这个邮箱地址。password参数设置的是SMTP密码,可以在邮箱界面上查看,如果是qq邮箱的话,

依次点击“设置”-》“账户”,在“开启服务”中开启“IMAP/SMTP服务”就会弹出窗口告诉你SMTP密码,直接复制粘贴到配置文件中即可。

配置好之后就可以使用了,使用方法如下:

$mailer = Yii::$app->mailer->compose();
$mailer->setFrom(Yii::$app->params[‘supportEmail‘]);//发送者
$mailer->setTo(‘[email protected]‘);//接收者
$mailer->setSubject(‘收到了吗‘);//邮件标题
$mailer->setHtmlBody(‘hello,wujuntian先生,请问您收到邮件了吗??‘);//邮件正文内容
$status = $mailer->send();//发送,成功则返回1

以上方法使用setHtmlBody()方法设置邮件正文内容,若邮件内容比较多,你也可以将邮件内容单独写成视图文件,然后在compose方法中指定作为

邮件内容的视图,使用方法如下:

Yii::$app->mailer->compose(
                [‘html‘ => ‘passwordResetToken-html‘, ‘text‘ => ‘passwordResetToken-text‘],//指定视图
                [‘****‘ => ****]//这里可以传一些视图需要的参数
            )
            ->setFrom([Yii::$app->params[‘supportEmail‘] => ‘个人管理系统‘])
            ->setTo($this->email)
            ->setSubject(‘你好吗?’)
            ->send();

注意,在compose()方法中指定的视图文件‘passwordResetToken-html’对应的是’config/mail/passwordResetToken-html.php’这个文件。

时间: 08-13

Yii2之mailer的使用的相关文章

Yii2.0中Mailer收发邮件详解

Yii2.0封装的类足够强大,Mailer的使用方法做一个总结:1.先在main-local.php中做好配置: return [//....'components' => ['mailer' => ['class' => 'yii\swiftmailer\Mailer',],],]; 详细如下: return [//....'components' => [ 'viewPath' => '@common/mail', 'useFileTransport' =>fals

Yii2系列教程四:实现用户注册,验证,登录

上一篇写了一点点Yii2的数据库相关知识和强大的Gii,这一篇就如上一篇的最后所说的一样:在Yii2中实现用户的注册和登录. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做.本期的用户注册和登录,我会使用一个很棒的composer package :dektrium/yii2-user,下面就开始我们的故事吧. 用户的注册和登录 在现在的Web应用中,几乎每一个应用都会需要用户注册,不管是使用的第三方还是自建的注册登录系统,我们都需要通过某些表单来

PHP框架Yii2.0安装(基础版、高级版)

最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指点出来. yii2.0的安装,官方提供了两种的安装办法,一种是通过composer来安装,另外一种是通过跟yii1.0的办法直接下载安装包来安装.至于对于第一种composer的安装,农成就不做多余的说明了,这里有很好的安装教程.点击进去就可以看到了,为此农成就不在说了,下面就给大家详细讲讲第二种通

Yii2 advance swiftmailer 不能发送邮件

我用的是Yii2高级模板,在配置好邮箱后,并编写测试,测试结果表明是发送成功的,但我的邮箱就是接受不了邮件. 经过排查发现,是由 common/config/main-local.php 文件的 'useFileTransport' => true这条配置造成的.一般来说只要安装好了Yii2高级模板之后,并初始化为dev环境后,你的common目录下会生成main-local.php文件,这个文件是你开发项目的时候的配置文件,它会覆盖main.php文件的配置.所以我将 'userFileTra

PHP框架-yii2(一)

yii2的常规安装,使用composer很简单; 与之前对yii1的了解,刚接触的yii2变化之一是命名空间的增加,还有就是有些代码的格式有些变化; 细节笔记: yii2开发版本基础程序是有注册登陆功能的,字段验证方面较yii1有所进步,可以直接验证某些字段在数据库中是否存在,验证规则如下: 1 public function rules() 2 { 3 return [ 4 ['username', 'filter', 'filter' => 'trim'], 5 ['username', '

yii2发送邮件(配置QQ版本)

1:首先在配置文件main-local.php components=>[]里面配置 'mailer' => [              'class' => 'yii\swiftmailer\Mailer',              'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件                'transport' => [                

我 && yii2(日志埋点,邮件提醒)

今天试着把yii2 的日志,如果发送邮件的形式实现,具体实现如下 1.环境介绍 lnmp php5.6, mysql5.5, lnmp1.2 yii2-advanced 2.配置文件的编写 在frontend/config/main.php 添加mailer 和 log 的配置 'mailer' => require_once '../config/mail.php', 'log' => require_once '../config/log.php', mailer的配置如下(fronten

Yii2的深入学习--事件

我们先来看下事件在 Yii2 中的使用,如下内容摘自 Yii2中文文档 事件可以将自定义代码“注入”到现有代码中的特定执行点.附加自定义代码到某个事件,当这个事件被触发时,这些代码就会自动执行.例如,邮件程序对象成功发出消息时可触发 messageSent 事件.如想追踪成功发送的消息,可以附加相应追踪代码到 messageSent 事件. Yii 引入了名为 [[yii\base\Component]] 的基类以支持事件.如果一个类需要触发事件就应该继承 [[yii\base\Componen

yii2 邮件发送(有图有真相)

经典的密码找回方案是发送邮件到用户邮箱然后修改密码,下面利用yii2 高级版的mail功能,进行邮件的发送,如下图 1.在comm/config/main-local.php中添加 'mailer' =>[ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', //指定邮件模版路径 //false:非测试状态,发送真实邮件而非存储为文件 'useFileTransport' => false, 'tra