yii2 邮件发送(有图有真相)
经典的密码找回方案是发送邮件到用户邮箱然后修改密码,下面利用yii2 高级版的mail功能,进行邮件的发送,如下图

1.在comm/config/main-local.php中添加
'mailer' =>[
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail', //指定邮件模版路径
//false:非测试状态,发送真实邮件而非存储为文件
'useFileTransport' => false,
'transport'=>[
'class' => 'Swift_SmtpTransport',
'host' =>'smtp.163.com', //163邮箱的SMTP服务器: smtp.163.com
'username' => 'coder_wilson@163.com',
'password' => 'xxxxxx', //163邮箱的客户端授权密码
'port' => '465',
'encryption' => 'ssl',
],
],
2.在对应的controller中的代码片段如下
public function actionSeekpassword(){
$model=new User;
$model->setScenario('seekpassword');
//对表单提交用户名和邮箱进行数据库验证
if($model->certificate($data)){
//调用发送邮件函数
if($model->seekPass()){
return $this->success(['site/seekpassword']);
}else{
$message=current($model->getFirstErrors());
return $this->error($message);
}
}
return $this->render("seekpassword",[
'model'=>$model,
]);
}
3.对应的model中代码片段如下
public function seekpass(){
$data=Yii::$app->request->post('User');
$time=time();
$token=$this->createToken($data['username'],$time);
//里面参数代表指定模版和传递的参数 common/mail/layouts/html里面有模版了写主体就行了
$mailer= Yii::$app->mailer->compose('seekpass',['username'=>$data['username'],'time'=>$time,'token'=>$token]);
$mailer->setFrom("coder_wilson@163.com");
$mailer->setTo($data['email']);
$mailer->setSubject("找回密码");//邮件主题标题
if($mailer->send()){
return true;
}else{
return false;
}
}
4.view文件与普通表单文件无异
5.common/mail/seekpass发送邮件的模版文件
<p>尊敬的:<b><?php echo $username; ?></b></p>
<p>您找回密码的链接如下:</p>
<?php $url=Yii::$app->urlManager->createAbsoluteUrl(['site/reback','time'=> $time,'username'=>$username,'token'=>$token]); ?>
<p><a href="<?php echo $url; ?>"><?php echo $url; ?></a></p>
<p>该链接5分钟内有效,请勿传递给别人</p>
<p>该邮件为系统自动发送,请勿回复!!</p>
yii2 邮件发送(有图有真相)的更多相关文章
- 解决Yii2邮件发送问题(结果返回成功,但接收不到邮件)
刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件.配置文件代码如下: 'components' => [ 'db' => [ 'class' => 'yii\db\C ...
- yii2 邮件发送
修改配置文件mail-local.php 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' =&g ...
- Yii2邮件发送
1.在配置文件main-local.php components=>[]里面配置 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', ...
- yii2邮箱发送
yii2 邮件发送 163邮箱 1.在配置文件main-local.php components=>[]里面配置 'mailer' => [ 'class' => 'yii\swi ...
- yii2.0 邮件发送如何配置
邮件发送配置: 打开配置文件将下面代码添加到 components => [...]中(例:高级版默认配置在/common/config/main-local.php) 'mai ...
- 3.13 练习题4:邮件发送(smtp)
3.13 练习题4:邮件发送(smtp) 前言本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人,专治各种不行,总之看完这篇麻麻再也不用担心我的邮件收不到了.以下代 ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- J2EE 邮件发送那些事儿
距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...
- 结合ABP源码实现邮件发送功能
1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...
随机推荐
- 关于OC和Swift使用GIT创建项目
1.先进入码云,点击自己的头像 -> ,2.里面有一个SSH公钥,点击 ,3.之后在终端输入 ssh-keygen -t rsa -C “xxxxx@xxx.com”,注意:”” 要用英 ...
- Codeforces#363 Div2
A题: 题意:给定一些数,给定一些往左走和往右走的操作,问是否能够相遇,如果相遇请求出相遇时间 分析:对于相邻两个数,如果大的往左,小的往右就能够相遇,否则不能相遇,在求出所有相遇当中的第一次相遇即可 ...
- Spring自学教程-IOC、DI、AOP(二)
一.spring的IOC-就是怎样使用spring来创建对象 二.springDI(依赖注入)-就是怎样给属性赋值 通过set方式赋值 以下我们只需要记住两点的赋值,基本类型和引用类型的赋值 基本类型 ...
- window环境变量
首先Window中有很多乱七八糟的路径变量之类的,归类下来有几类,主要是为了我们分清楚概念,以免搞的糊涂了. 1. Window系统的环境变量:顾名思义,就是系统级别的变量,或者利用我们编程的角度来讲 ...
- SSL证书指令
转自:http://blog.csdn.net/madding/article/details/26717963 生成Self Signed证书 # 生成一个key,你的私钥,openssl会提示你输 ...
- Android 屏幕适配方案(转载)
3.百分比的引入 1.引入 其实我们的解决方案,就是在项目中针对你所需要适配的手机屏幕的分辨率各自简历一个文件夹. 如下图: 然后我们根据一个基准,为基准的意思就是: 比如480*320的分辨率为基准 ...
- Thinking in scala (1)----类
ChecksumAccumulator.scala import scala.collection.mutable.Map class ChecksumAccumulator { private va ...
- 无锁同步-C++11之Atomic和CAS
1.概要 本文是无锁同步系列文章的第一篇,主要探讨C++11中的Atomic. 我们知道在C++11中引入了mutex和方便优雅的lock_guard.但是有时候我们想要的是性能更高的无锁实现,下面我 ...
- paper资料
1.Ycbcr RGB空间转换 :http://www.cnblogs.com/Imageshop/archive/2013/02/14/2911309.html 2.抠图:http://www.c ...
- IM 融云 之 安装cocoapods 安装 SDK
1. podfile 内容如下: platform :ios, '7.0' pod 'RongCloudIMKitWithVoip', '2.4.3' 现在最新是2.4.3 导入之后,就直接可以用了. ...