PHP 使用ThinkPHP實現電子郵件發送示例

文章目錄

  • 首先我們需要設置我們的郵箱客戶端授權,獲取到授權碼
    • 找到我們的郵箱設置
    • 去賬號中找到這一堆服務,找到后開啟smtp服務
    • 開啟服務后管理服務
  • 接下來需要去下載相應的第三方類庫(我這里使用的是PHPMailer)
  • 在thinkPHP中封裝一下郵件服務類
    • 實際調用
    • 效果
  • 總結

在我們很多的程序中都需要發送郵件去提示用戶一些相關信息,應用的范圍還是很廣的,比如:登錄驗證需要驗證碼,后臺管理系統中有變更需要發送郵箱提示等,而且郵件的發送相較于短信發送成本更低,是 免費的!!
那么要實現郵件發送需要做以下操作:

首先我們需要設置我們的郵箱客戶端授權,獲取到授權碼

找到我們的郵箱設置

我這邊使用的是QQ郵箱,每個郵箱基本都差不多
QQ郵箱首頁

去賬號中找到這一堆服務,找到后開啟smtp服務

QQ郵箱設置賬號頁服務區

開啟服務后管理服務

在這里點擊就可以獲取到授權碼啦
QQ郵箱獲取stmp授權碼獲取

接下來需要去下載相應的第三方類庫(我這里使用的是PHPMailer)

直接使用composer安裝擴展phpmailer

composer require phpmailer/phpmailer

在thinkPHP中封裝一下郵件服務類

我把它封裝在了application目錄下的common.php公共類中,下面是代碼:

// 應用公共文件
namespace app;class Common
{// 應用公共文件/*** 郵件發送* @param email 郵箱號,發送給誰* @param code 郵件內容*/public function send_code_to_email($email, $code){Vendor('PHPMailer.PHPMailerAutoload');//這里引入一下剛才安裝擴展的自動加載類$mail = new \PHPMailer(); // 實例化類,新建$mail->isSMTP(); //  開啟SMTP$mail->CharSet = 'utf8'; // 設置編碼$mail->Host = 'smtp.qq.com'; // SMTP服務器$mail->SMTPAuth = true; // smtp需要鑒權 這個必須是true$mail->Username = ''; // 發信人的賬號,這個需要是開啟stmp服務的郵箱號$mail->Password = ""; // 密碼,非郵箱密碼,是SMTP生成的密碼,也就是授權碼$mail->From = ''; // 發信人的地址$mail->SMTPSecure = 'ssl'; // 采用ssl協議,這里采用了加密,端口需要進行開放:465或587$mail->Port = 465; // 端口號$mail->FromName = ""; // 發件人昵稱$mail->addAddress($email); // 收信人地址$mail->addReplyTo($email); //回復的時候回復的郵箱,建議和發信人一樣$mail->Subject = ""; // 郵件主題,看自己需求$mail->Body = $code; // 郵件內容if (!$mail->send()) {return json([400, $mail->ErrorInfo]);} else {return json([200, '驗證碼已經發送成功']);}}
}

我這邊是只封裝了收件人和郵件內容,看具體業務需求,可以將主題,發件人昵稱也封裝一下

實際調用

在需要調用的地方進行調用就可以了,當然要先將公共類引入
在需要調用的控制器文件中的命名空間下使用use引入

use app\Common;

調用函數

/*** 電子郵件* @param string $email郵箱號* @param string $code郵件內容* 具體到common應用公共函數文件內找senf_code_to_email方法*/
public function sends()
{$email = input('email');//獲取到收件人$code = input('code');//獲取到郵件內容$send = new Common();//實例化公共類return $send->send_code_to_email($email, $code);//調用封裝好的方法
}

效果

我這邊直接用網頁url調用了一下
調用返回
收到郵件:
收到郵件

總結

總體其實還是比較簡單的,需要注意如果不使用ssl安全協議的話端口是25,不過阿里云是強制ssl安全的,所以最好還是使用465端口比較好
到郵箱中授權開啟獲取授權碼->在thinkPHP框架中使用composer安裝PHPMailer擴展->封裝一下發送郵件方法->在業務中調用即可

希望對大家有所幫助,如果覺得有用的話還請不吝三連
請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35917.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35917.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35917.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ajax_4(進階)同步異步+ 宏任務微任務 + Promise鏈 + async終極解決方案 +事件循環原理 + 綜合案例

Ajax(進階) 文章目錄 Ajax(進階)01-同步代碼和異步代碼什么是同步代碼?什么是異步代碼?代碼閱讀 02-回調函數地域概念缺點代碼示例 03-Promise鏈式調用概念細節好處代碼示例 04-Promise鏈式應用代碼示例 05-async函數和await概念代碼示例 06-async和awai…

Mysql 建索引規范

索引規范 今天在建線上表的時候,做了一個varchar的索引,運維說varchar的索引會占用很大的內存。 于是 上網搜了一下建索引規范 一、建表規約 【強制】(1) 存儲引擎必須使用InnoDB 解讀:InnoDB支持事物、行級鎖、并發…

數據結構—圖的應用

6.4圖的應用 概念回顧—生成樹 生成樹:所有頂點均由邊連接在一起,但不存在回路的圖。 一個圖可以有許多棵不同的生成樹、含有n個頂點 n-1 條邊的圖不一定是生成樹所有生成樹具有以下共同特點 生成樹的頂點個數與圖的頂點個數相同;生成樹是圖的…

如何運用小程序技術閉環運營鏈路?

如何通過線上小程序獲取用戶線索,提高企業抗風險能力,建立有效的營銷數字化系統一直是困擾每一個小程序開發者與運營者的問題。 當我們選擇使用小程序設計自己的運營流程時,從「推廣」到「轉化」,再到最終的「留存」都是運營過程…

ABeam×Startup丨德碩管理咨詢(深圳)創新研究團隊前往靈境至維·既明科技進行拜訪交流

近日,德碩管理咨詢(深圳)(以下簡稱“ABeam-SZ”)創新研究團隊一行前往靈境至維既明科技有限公司(以下簡稱“靈境至維”)進行拜訪交流,探討線上虛擬空間的商業模式。 現場合影 &…

前臺測試轉后臺優化歷險記,應屆生薪資8K逆襲,從此扶搖直上九萬里!

優橙教育每一期都會有不少從前臺測試轉到后臺的小伙伴應邀而來,其實每個人的經歷都是大致相同的,這時候肯定會有很多小伙伴問,為什么出來花錢出來參加培訓而不是在項目上轉呢? 或許是因為在項目上摸爬滾打太久了,吃不下…

Qt掃盲-QWidget理論使用總結

QWidget理論使用總結 一、概述二、頂層 控件 和子 控件三、復合控件四、自定義控件和繪制五、大小提示和大小策略六、事件七、一組函數和屬性八、QWidget樣式表九、透明度和雙緩沖十、創建半透明窗口 一、概述 widget 是用戶界面的最小單位:它從window系統接收鼠標…

Jsoup爬取簡單信息

1. 豆瓣圖書最受關注 1.1 創建SpringBoot項目或者Maven項目 1.2 引入jsoup <dependency><!-- jsoup HTML parser library https://jsoup.org/ --><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.15.3<…

Qt應用開發(基礎篇)——堆棧窗口 QStackedWidget

一、前言 QStackedWidget繼承于QFrame&#xff0c;QFrame繼承于QWidget&#xff0c;是Qt常用的堆棧窗口部件。 框架類QFrame介紹 QStackedWidget堆棧窗口&#xff0c;根據下標切換&#xff0c;一次顯示一個小部件&#xff0c;常用于應用界面切換、圖片輪詢播放等場景。 二、QSt…

用Java調用C#的WebService接口

這是一個用Java調用C#版程序的例子,廢話不多說,上代碼: C#接口代碼: using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Services.Description;[WebService(Namespace = " http://www.ta…

如何在Springboot項目中讀取zip壓縮包并且把文件導出成zip壓縮包

文章目錄 設想場景實現流程小結 設想場景 為方便老師錄入大量學生圖片信息&#xff0c;在添加照片時&#xff0c;學生的相關資料以身份證號碼圖片描述命名如 &#xff08;1231231234567一寸照片.jpg&#xff09; &#xff08;1231231234567身份證正面照片.jpg&#xff09; &am…

中小企業體育代言:探索費用策略與實際操作

隨著體育市場的不斷擴大和企業品牌的不斷提升&#xff0c;中小型企業正逐漸將目光投向了體育明星代言&#xff0c;希望通過這一策略來提升品牌知名度、美譽度&#xff0c;進而吸引目標消費者的注意力并提升銷售量。然而&#xff0c;中小型企業請體育明星代言的費用究竟是多少呢…

docker 離線模式-部署容器

有網絡的情況下下載需要的鏡像 比如(下面以tomcat為例子&#xff0c;其他鏡像類似) docker pull tomcat打包鏡像文件到本地 docker save tomcat -o tomcat.tar將tomcat.tar 上傳到內網服務器&#xff08;無外網環境&#xff09; 導入鏡像 docker load -i tomcat.tar創建容器…

element-ui的el-dialog,簡單的封裝。

el-dialog是使用率很高的組件 使用el-dialog很多都是按照文檔的例子&#xff0c;用一個變量控制是否顯示&#xff0c;再來一個變量控制標題。 如果我這個對話框多個地方使用的話還要創建多個變量&#xff0c;甚至關閉之后還要清空一些變量&#xff0c;應該可以簡化一點。我寫…

Windows Hyper-V Ubuntu 22.04 LTS安裝

文章目錄 Ubuntu準備Hyper-V啟用虛擬化支持services.msc 打開服務列表&#xff0c;關注Hyper-V服務是否啟動打開管理器創建虛擬機 啟動備份 Ubuntu 下載Ubuntu-Desktop&#xff0c;這是個iso文件。 準備 20GB以上的磁盤空間&#xff0c;ubuntu安裝后的虛擬磁盤文件超過15GB一…

C/C++test兩步完成CMake項目靜態分析

您可能一直在靜態分析中使用CMake。但您是否嘗試過將Parasoft C/Ctest與CMake一起使用嗎&#xff1f;以下是如何使用C/Ctest在基于CMake的項目中運行靜態分析的詳細說明。 CMake是用于構建、測試和打包軟件的最流行的工具之一。Parasoft C/Ctest通過簡化構建管理過程&#xff…

【Minecraft】Fabric Mod開發完整流程1 - 環境配置與第一個物品

前言 Fabric 是 Minecraft 一款非官方的模組 API,與 Forge mod 不同。它以輕量級和高性能為設計目標,專注于支持新版本的 Minecraft。 Fabric 和 Forge 在各自的加載編譯流程上差別很大&#xff0c;所以你很難看見有同時支持二者的 mod&#xff0c;除非做了兼容性處理 Fabri…

【Java筆記】對象存儲服務MinIO

1 MinIO簡介 MinIO基于Apache License v2.0開源協議的對象存儲服務&#xff0c;可以做為云存儲的解決方案用來保存海量的圖片&#xff0c;視頻&#xff0c;文檔。由于采用Golang實現&#xff0c;服務端可以工作在Windows,Linux, OS X和FreeBSD上。配置簡單&#xff0c;基本是復…

mac-右鍵-用VSCode打開

1.點擊訪達&#xff0c;搜索自動操作 2.選擇快速操作 3.執行shell腳本 替換代碼如下&#xff1a; for f in "$" doopen -a "Visual Studio Code" "$f" donecommand s保存會出現一個彈框&#xff0c;保存為“用VSCode打開” 5.使用

基于百度語音識別API智能語音識別和字幕推薦系統——深度學習算法應用(含全部工程源碼)+測試數據集

目錄 前言總體設計系統整體結構圖系統流程圖 運行環境模塊實現1. 數據預處理2. 翻譯3. 格式轉換4. 音頻切割5. 語音識別6. 文本切割7. main函數 系統測試工程源代碼下載其它資料下載 前言 本項目基于百度語音識別API&#xff0c;結合了語音識別、視頻轉換音頻識別以及語句停頓…