第一步:

  在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 框架邮件的发送的更多相关文章

  1. yii2.0框架安装心得

    yii2.0安装心得 能够搜索到这篇文章的朋友相信是对yii框架有兴趣的,但是我不得不吐槽的是,这个安装过程确实让人头疼,接下来就让大家见证一下这个纠结的过程 根据官网的说法,安装这个框架需要用到co ...

  2. 8.Yii2.0框架控制器接收get.post数据

    8.Yii2.0框架控制器接收get.post数据 一.get传参 <?php /** * Created by Haima. * Author:Haima * QQ:228654416 * D ...

  3. 教你在Yii2.0框架中如何创建自定义小部件

    本教程将帮助您创建自己的自定义小部件在 yii framework 2.0.部件是可重用的模块和用于视图. 创建一个小部件,需要继承 yii\base\Widget,覆盖重写 yii\base\Wid ...

  4. yii2.0框架中session与cookie的用法

    我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用     function actionS1(){         echo $t ...

  5. yii2.0框架where条件的使用

    在yii框架中,where条件的使用多种多样,下面就和大家介绍几种常用有效的使用方法 1. ['type' => 1, 'status' => 2] //等于 (type = 1) AND ...

  6. 22.Yii2.0框架多表关联一对一查询之hasOne

    思路: 通过文章查它对应的分类信息 一对一的关系 控制器里 //一对一关联查询 public function actionRelatesone() { //方法一,hasOne() 用查一条文章的结 ...

  7. 20.Yii2.0框架多表关联一对多查询之hasMany

    目录 新手模式 hasMany关联模式查询 新建mode层Article.php 新建mode层Category.php 新建控制器HomeController.php 新手模式 用上次的查询结果,作 ...

  8. 19.Yii2.0框架模型删除记录

    目录 //删除记录 //http://yii.com/?r=home/del public function actionDel() { //查出要删除的记录行 // 方法一:(查一行,删一行) // ...

  9. 18.Yii2.0框架模型修改记录 和 修改点击量

    目录 修改数据 修改点击量 修改数据 上面要 use app\models\Article; //修改 //http://yii.com/?r=home/Edit public function ac ...

随机推荐

  1. SQLite剖析之数据类型

    许多SQL数据库引擎(除SQLite之外的各种SQL数据库引擎)使用静态.严格的数据类型.对于静态类型,一个值的数据类型由它的容器,即存储这个值的列来决定.SQLite则使用更加通用的动态类型系统.在 ...

  2. PHP "延迟静态绑定" 功能,static

    从这个名字的定义提取出两个关键点,第一点静态,也就是说这个功能只适用于静态属性或静态方法.第二点延迟绑定,这个根据下面代码就可以很好的理解 看一下这个例子: class A{ static $name ...

  3. jsonp 跨域请求

    背景: JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源 ...

  4. TWRP基于omnirom 6.0.1编译教程

    1.环境搭配 参照CM13.0编译笔记http://www.cnblogs.com/dinphy/p/5670293.html 参照SM 2.0 编译笔记http://www.cnblogs.com/ ...

  5. hbase-0.94 Java API

    Hierarchy For Package org.apache.hadoop.hbase Package Hierarchies: All Packages Class Hierarchy java ...

  6. java制作验证码

    建立一个web工程

  7. eclipse导入第三方jar包进入web项目的方法

    此方式是没有用maven进行构建的项目,纯动态项目. 具体方法: 1.通过Java Build Path导入. 比如我项目上要用servlet-api.jar这个包,我所用的web容器是tomcat, ...

  8. python标准模块(三)

    本文会涉及到的模块: subprocess logging 1. subprocess 可以执行shell命令的相关模块和函数有: os.system os.spawn os.popen --废弃 p ...

  9. apache2.4 绿色版环境配置。

    http://jingyan.baidu.com/article/9faa723152c5d6473d28cb47.html http://jingyan.baidu.com/article/9faa ...

  10. jQuery中 pageX,clientX,offsetX,layerX的区别

    一.PageX和clientXPageX和clientX ,这个两个比较容易搞混,PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化.可以理解为:相对#(0.0 ...