第一步:

  在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. 树莓派Odroid等卡片式电脑上搭建NAS教程系列6-miniDLNA

    目录: 1. 树莓派Odroid等卡片式电脑上搭建NAS教程系列1-Ubuntu系统安装 2. 树莓派Odroid等卡片式电脑上搭建NAS教程系列2-SSH连接访问 3. 树莓派Odroid等卡片式电 ...

  2. 音乐播放器 EasyMusic (一)

    EasyMusic 一. 代码获取 github 上链接为 https://github.com/VincentWYJ/EasyMusic, 感兴趣的朋友可以同步下来看, 欢迎提出宝贵意见或建议. 1 ...

  3. ModernUI教程:如何使用你自己的导航框架

         Modern UI for WPF带有一个内置的页面导航框架,易于使用和可扩展的.但这并不是必须的,你也可以自己来自定义一个导航框架.      默认的ModernWindow控件模板包括标 ...

  4. 图片轮播图插件的使用 unslider!!!

    1.百度图片轮播图unslider,第一个就会出现jquery unslider轮播图,点击进去,下载网站提供的文件,解压,内部有我们需要使用的各种js,图片等. 2.在自己的eclipse或者int ...

  5. XRecyclerView Scrapped or attached views may not be recycled

    将XRecyclerView布局设置为 android:layout_width="match_parent"android:layout_height="match_p ...

  6. How To Set Up an OpenVPN Server on Ubuntu 14.04

    Prerequisites The only prerequisite is having a Ubuntu 14.04 Droplet established and running. You wi ...

  7. HTML5图形图像处理技术研究

    摘要:图形图像处理平台大部分是传统的C/S架构的桌面应用程序,维护困难,共享性差,而B/S架构的Web程序具有易维护.易共享的优点.本文研究了基于HTML5的Web图形图像处理技术,用HTML5实现了 ...

  8. iOS10遇到有推送的Demo真机报错的解决

    1.打开project.pbxproj,搜com.apple.Push 改成enabled = 0(在projectName.xcodeproj文件上右键"显示包内容",用文本编辑 ...

  9. hihoCoder 后缀自动机三·重复旋律6

    后缀自动机三·重复旋律6 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数列. 现在小Hi ...

  10. AOJ DSL_2_E Range Add Query (RAQ)

    Range Add Query 数列 A = {a1,a2,...,an} に対し.次の2つの操作を行うプログラムを作成せよ. add(s,t,x): as,as+1,...,at にxを加算する. ...