yii2.0 框架邮件的发送
第一步:
在main-local.php中的components中配置mailer:
$config = [
'components' => [
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'mail2.augmentum.com.cn',
'username' => 'gladysyang@augmentum.com.cn',
'password'=> '111111',
'port' => '25',//这个可以在网上搜,一般的smtp服务器端口为25
'encryption' => '',
],
'messageConfig' => [
'charset' => 'UTF-8',
'from' => ['gladysyang@augmentum.com.cn'=>'admin']
],
],
],
];
第二步:配置params.php文件(*这个好像不用配置也行,我也是初学者,有点搞不懂,反正配置了也没有影响)
<?php
return [
'adminEmail' => 'gladysyang@augmentum.com.cn',
'supportEmail' => 'gladysyang@augmentum.com.cn',
'user.passwordResetTokenExpire' => 3600,
];
第三步:在model类里面用EmailValidator类验证邮箱地址格式
//验证邮箱
public function emailValidator($email) {
$validator = new EmailValidator();
if ($validator->validate($email, $error)) {
return 'success';
} else {
return $error;
}
}
第四步:在controller中发送邮件
//忘记密码
public function actionForget() {
$request = Yii::$app->request;
$emailAddress = $request->post('email');
//调用User类中的emailValidator方法,判断用户输入的邮箱地址格式是否正确
$message = User::emailValidator($emailAddress); if ($message === 'success') {
//如果邮箱地址格式正确,写邮箱内容
$mail = Yii::$app->mailer->compose();
$mail->setTo($emailAddress);
$mail->setSubject('找回密码');
$mail->setHtmlBody('<font>please click this link</font><br><a href="">iajeijfajfkajfdkjfjdf</a>'); try {
//发送邮件
if ($mail->send()) {
//如果邮件发送成功,解析邮箱地址,拼接成一个url
$emailArr = explode("@", $emailAddress);
$emailUrl = 'https://mail.' . $emailArr[1];
//然后判断url是否存在
if ($this->url_exists($emailUrl)) {
//如果存在,我在邮件发送成功界面出现一个链接
$data['url'] = $emailUrl;
return $this->render('success', $data);
}
//否则直接跳到邮件发送成功界面
return $this->render('success');
}
// "\"默认在系统中找Swift_TransportException
} catch (\Swift_TransportException $e) {
$data['message'] = '邮件发送失败,请检查网络是否正常';
return $this->render('forget', $data);
}
} else {
//如果输入的邮箱错误,还是回到发送邮箱界面
return $this->render('forget', ['message'=>'请输入正确的邮箱']);
}
} //判断网址是否存在
public function url_exists($url) {
$check = @fopen($url,"r");
if($check)
$status = true;
else
$status = false;
return $status;
}
注:这些只是我在写demo时记下的,如有不对的地方,忘指教
yii2.0 框架邮件的发送的更多相关文章
- yii2.0框架安装心得
yii2.0安装心得 能够搜索到这篇文章的朋友相信是对yii框架有兴趣的,但是我不得不吐槽的是,这个安装过程确实让人头疼,接下来就让大家见证一下这个纠结的过程 根据官网的说法,安装这个框架需要用到co ...
- 8.Yii2.0框架控制器接收get.post数据
8.Yii2.0框架控制器接收get.post数据 一.get传参 <?php /** * Created by Haima. * Author:Haima * QQ:228654416 * D ...
- 教你在Yii2.0框架中如何创建自定义小部件
本教程将帮助您创建自己的自定义小部件在 yii framework 2.0.部件是可重用的模块和用于视图. 创建一个小部件,需要继承 yii\base\Widget,覆盖重写 yii\base\Wid ...
- yii2.0框架中session与cookie的用法
我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用 function actionS1(){ echo $t ...
- yii2.0框架where条件的使用
在yii框架中,where条件的使用多种多样,下面就和大家介绍几种常用有效的使用方法 1. ['type' => 1, 'status' => 2] //等于 (type = 1) AND ...
- 22.Yii2.0框架多表关联一对一查询之hasOne
思路: 通过文章查它对应的分类信息 一对一的关系 控制器里 //一对一关联查询 public function actionRelatesone() { //方法一,hasOne() 用查一条文章的结 ...
- 20.Yii2.0框架多表关联一对多查询之hasMany
目录 新手模式 hasMany关联模式查询 新建mode层Article.php 新建mode层Category.php 新建控制器HomeController.php 新手模式 用上次的查询结果,作 ...
- 19.Yii2.0框架模型删除记录
目录 //删除记录 //http://yii.com/?r=home/del public function actionDel() { //查出要删除的记录行 // 方法一:(查一行,删一行) // ...
- 18.Yii2.0框架模型修改记录 和 修改点击量
目录 修改数据 修改点击量 修改数据 上面要 use app\models\Article; //修改 //http://yii.com/?r=home/Edit public function ac ...
随机推荐
- sql case 用法总结
快下班了,抽点时间总结一下sql 的 case 用法. sql 里的case的作用: 用于计算条件列表的表达式,并返回可能的结果之一.sql 的case 类型于编程语言里的 if-esle if-el ...
- web响应式图片设计实现
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...
- 解决Centos/Redhat,命令不存在
[root@26 ~]# lsb_release #不存在-bash: lsb_release: command not found [root@26 ~] ...
- JQuery中Ajax的操作
JQuery Ajax异步操作的方式: $.ajax,$.post, $.get, $.getJSON. 一, $.ajax,这个是JQuery对ajax封装的最基础步,通过使用这个函数可以完成异 ...
- 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第五章:荣耀之钥:度量成功 我们的分析师常常得不到我们应得的喜欢,尊重和资金,因为我们没有充分地衡量一个黄金概念:成果.因为我们 ...
- 正则表达式解析url参数
解析url参数正则:(?<=\?|&)[\w\={}\\\\,-:'\s'""]*(?=[^#\s]|) 意思是(?<=\?|&) 从?或&符号 ...
- 网络中两台主机的通信过程(TCP)
两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...
- 在Application中集成Microsoft Translator服务之开发前准备
第一步:准备一个微软账号 要使用Microsoft Translator API需要在Microsoft Azure Marketplace(https://datamarket.azure.com/ ...
- MYSQL入门全套(第三部)
MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...
- 在ie浏览器,360浏览器下,margin:0 auto;不居中的原因
转自 http://blog.sina.com.cn/s/blog_6eef6bf60100nn4m.html margin:0 auto:不居中可能有以下两个的原因 没有设置宽度 看看上面的代码,根 ...