Thinkphp5本身并没有实现发邮件的功能,至少据我所知。
本文利用网易邮箱作为发邮件的邮箱。作为发送邮件的前提是需要开启SMTP服务,打开网易邮件,点击设置按钮,如下图所示
![](https://images2018.cnblogs.com/blog/1213688/201804/1213688-20180426174350849-710583554.png)
勾选smtp服务
![](https://images2018.cnblogs.com/blog/1213688/201804/1213688-20180426174447467-1521039103.png)
保存之后点击->客户端授权密码,我的已经开通
![](https://images2018.cnblogs.com/blog/1213688/201804/1213688-20180426174610958-1833231288.png)
没有开通的按照步骤操作即可,然后下面是下载phpMailer,https://github.com/PHPMailer/PHPMailer/,这个地址;下载之后将其中的两个文件
![](https://images2018.cnblogs.com/blog/1213688/201804/1213688-20180426174805328-1954589652.png)
拿出来,放到Thinkphp5的扩展目录下,扩展目录先创建一个叫mailer的文件,就放在这个下面,然后打开两个文件,给一个命名空间名字,我的是namespace mailer;
然后我再项目的common.php下,写了如下代码
[![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")
~~~
1 <?php
2 // +----------------------------------------------------------------------
3 // | ThinkPHP [ WE CAN DO IT JUST THINK ]
4 // +----------------------------------------------------------------------
5 // | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
6 // +----------------------------------------------------------------------
7 // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
8 // +----------------------------------------------------------------------
9 // | Author: 流年 <liu21st@gmail.com>
10 // +----------------------------------------------------------------------
11
12 // 应用公共文件
13
14 use mailer\PHPMailer;
15 use mailer\SMTP;
16 /*
17 * 应用公共函数文件,函数不能定义为public类型,
18 * 如果我们要使用我们定义的公共函数,直接在我们想用的地方直接调用函数即可。
19 * */
20 // 公共发送邮件函数
21 function sendEmail($desc_content, $toemail, $desc_url){
22 echo $desc_content;
23 echo $toemail;
24 $mail = new PHPMailer();
25 $mail->isSMTP();// 使用SMTP服务
26 $mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
27 $mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址
28 $mail->SMTPAuth = true;// 是否使用身份验证
29 $mail->Username = "xxx@163.com";// 发送方的163邮箱用户名,就是你申请163的SMTP服务使用的163邮箱</span><span style="color:#333333;">
30 $mail->Password = "xxxx";// 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!</span><span style="color:#333333;">
31 $mail->SMTPSecure = "ssl";// 使用ssl协议方式</span><span style="color:#333333;">
32 $mail->Port = 465;// 163邮箱的ssl协议方式端口号是465/994
33 $mail->setFrom("xxx@163.com","Mailer");// 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示
34 $mail->addAddress($toemail,'博客回复消息');// 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)
35 $mail->addReplyTo("xxx@163.com","Reply");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
36 //$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
37 //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
38 //$mail->addAttachment("bug0.jpg");// 添加附件
39 $mail->Subject = "邮件回复!";// 邮件标题
40 $mail->Body = "以下是博客博主回复你的内容:".$desc_content."点击可以查看文章地址:".$desc_url;// 邮件正文
41 //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
42
43 if(!$mail->send()){// 发送邮件
44 echo 22;
45 return $mail->ErrorInfo;
46 // echo "Message could not be sent.";
47 // echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
48 }else{
49 return 1;
50 }
51 }
~~~
[![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")
然后在控制器的方法下使用就可以了,因为在common.php下所以不需要引入模块,使用代码
[![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")
~~~
1 /**
2 * 邮件发送
3 */
4 public function sendEmail()
5 {
6 // 根据你的内用传入得到相关的参数,在调用我们方才的函数时,传递过去即可。
7 $res = sendEmail("222", "xxx@163.com", "url");
8 // $res就是sendEmail()返回的值。我们根据返回的相应参数进行处理即可。
9 dump($res);
10 if ($res) {
11 echo 1;
12 }else{
13 echo 0;
14 }
15 }
~~~
[![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")
然后直接在浏览器走一下控制器下路由就可以啦啦啦,查看发送的邮件,发送成功。
- 简介
- 前端
- html
- css
- css选择器
- fiex布局
- 盒装模型
- javascript
- 原型链
- 作用域
- 事件绑定
- dom
- bom
- jquery
- 选择器
- jquery事件绑定
- layui
- bootstrap
- vue
- 路由(Vue Router)
- Vue CLI
- axios
- vant
- 打包部署
- 自定义组件
- 一些前端效果
- 点击复制功能
- 后端
- php框架
- thinkphp
- 隐藏index.php
- thinkphp实现多表查询
- thinkphp使用ajax单图上传
- thinkphp使用ajax图集上传
- thinkphp使用ajax查询是否重名
- thinkphp使用ajax表单上传
- where多个条件
- 邮件发送功能
- thinkphp短信宝发送短信
- tp5事务
- validate验证二维数组
- yii2
- yii配置邮件
- yii的CRUD操作
- layui中两种展示表单的方式
- laravel
- laravel实例
- laravel登录
- laravel前端注册
- laravel列表
- laravel删除
- laravel编辑
- laravel新增
- Laravel 目录结构
- Laravel 路由
- Laravel 控制器
- Laravel 模型读操作
- Laravel 模型增、删、改操作
- Laravel 中间件
- Laravel 视图
- Laravel ,YII,thinkphp 框架的区别
- 会话控制
- session
- session存入redis
- session创建
- session删除
- cookie
- 面向对象
- 三大特性
- 魔术方法
- 修饰符
- obj变量
- php
- php版本差异
- php7与php5的区别
- PHP 内存溢出问题
- 数据类型
- PHP 垃圾回收机制(GC)
- 文件目录操作
- php函数
- 字符串相关函数
- 数组相关函数
- 超全局数组与超全局变量
- php魔术方法
- 引用变量
- php类库
- 1.根据随机数生成6位密钥
- 2.获取客户端IP地址
- 3.多维数组变成一维数组
- 4.判断是否是微信浏览器
- 5.判断是否是移动端
- 6.隐藏手机号码156***8956
- 7.隐藏邮箱 9533*****@qq.com
- 8.数组排序
- 9.添加操作日志
- 10.无线分类按子分类排序
- 11.从数组中删除空白的元素
- 12.字符串相关类库
- curl模拟post/get请求
- 替换中间四位数
- PHP地理位置计算
- 生成唯一订单号
- 阿拉伯数字转化为大写
- 时间戳转为中文时间
- php获取本年、本月、本周时间戳和日期格式的实例代码(分析)
- 去除数据库的数据空格
- 压缩Zip文件和文件打包下载
- PHP常用六大设计模式
- 单例模式
- 工厂模式
- 注册树模式
- 策略模式
- 适配器模式
- 观察者模式
- 数据库
- 留言板功能
- 所了解的数据库
- sql server
- Memecached
- MongoDB
- mysql
- 存储引擎(MyISAM与InnoDB)
- 库表CRUD操作
- 索引
- 事务
- mysql常用命令
- 悲观锁和乐观锁
- 数据库优化
- 大流量大并发优化
- Redis
- redis相关考点
- 开启redis
- redis缓存cache
- redis存储session
- redis限制提交次数
- 缓存雪崩,击穿,穿透(copy)
- redis数据结构及使用场景
- 消息队列
- Redis、Memecached 区别?
- phpstudy升级mysql版本
- 分表
- 读写分离
- linux
- 开发环境搭建
- mysql配置
- centos7(lnmp)环境搭建
- ubuntu(lnmp)环境搭建
- Nginx
- nginx四个基本功能
- nginx重启出错
- Nginx 的反向代理
- 用户用户组
- 虚拟机安装
- linux常用命令
- chmod命令
- ubuntu下apt-get 命令
- 释放内存
- 云锁安装及使用
- 大部队搭建
- Centos开启端口命令
- Centos禁止root登录
- Centos7修改22端口
- Rsync备份
- 开启端口
- 微信开发
- 辅助开发
- 网站SEO
- TCP/IP协议
- HTTP 请求全过程
- http状态码
- http和https的区别
- http请求三部分
- tcp三次握手
- 三次握手的作用
- tcp四次挥手
- CMS
- 织梦CMS
- 帝国cms
- wordpress
- 禅知cms
- 八大接口
- 微信支付
- 支付宝支付
- 邮件
- 微博登录
- QQ登录
- 快递
- 天气
- 常见算法
- 快速排序
- 冒泡排序
- 选择排序
- 插入排序
- 二分查找
- 希尔排序
- V2Ray搭建
- AJAX
- GIT
- RBAC用户权限管理数据库设计
- 开发中遇到的一些问题
- 资料购买
- 建立ssr服务器
- 简单建
- 申请并使用ssl证书
- 正则表达式手册
- phpstorm
- 注册码
- 备用注册码
- 网站设计概要
- 网站相关功能代码
- 权限(RBAC/AUTH)
- 无限级分类
- 记住登录状态
- email找回密码
- 企业网站开发概要
- 网站后台
- 文章管理
- 栏目管理 CRUD 上级栏目
- 栏目管理
- 友情链接
- 操作日志
- 登录注册
- 权限管理
- 网站配置
- 网站前台
- 首页
- 新闻动态
- 联系
- 案例
- 关于
- 单店铺商城开发概要
- 面试准备
- 有意思的面试题
- 拉钩面试要求
- 慕课面试视频知识总结
- 面试题汇总
- 题目1
- 一些工作的要求
- 前端炒的
- 面试项目介绍
- MySQL面试100 问
- 术语库
- redis相关
- php操作redis
- redis消息队列(异步)
- redis消息队列(同步)