Thinkphp5本身并沒有實現發郵件的功能,至少據我所知。
本文利用網易郵箱作為發郵件的郵箱。作為發送郵件的前提是需要開啟SMTP服務,打開網易郵件,點擊設置按鈕,如下圖所示

勾選smtp服務

保存之后點擊->客戶端授權密碼,我的已經開通

沒有開通的按照步驟操作即可,然后下面是下載phpMailer,https://github.com/PHPMailer/PHPMailer/,這個地址;下載之后將其中的兩個文件

拿出來,放到Thinkphp5的擴展目錄下,擴展目錄先創建一個叫mailer的文件,就放在這個下面,然后打開兩個文件,給一個命名空間名字,我的是namespace mailer;
然后我再項目的common.php下,寫了如下代碼
[](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 }
~~~
[](javascript:void(0); "復制代碼")
然后在控制器的方法下使用就可以了,因為在common.php下所以不需要引入模塊,使用代碼
[](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 }
~~~
[](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消息隊列(同步)