文章目錄
- 首先我們需要設置我們的郵箱客戶端授權,獲取到授權碼
- 找到我們的郵箱設置
- 去賬號中找到這一堆服務,找到后開啟smtp服務
- 開啟服務后管理服務
- 接下來需要去下載相應的第三方類庫(我這里使用的是PHPMailer)
- 在thinkPHP中封裝一下郵件服務類
- 實際調用
- 效果
- 總結
在我們很多的程序中都需要發送郵件去提示用戶一些相關信息,應用的范圍還是很廣的,比如:登錄驗證需要驗證碼,后臺管理系統中有變更需要發送郵箱提示等,而且郵件的發送相較于短信發送成本更低,是 免費的!!
那么要實現郵件發送需要做以下操作:
首先我們需要設置我們的郵箱客戶端授權,獲取到授權碼
找到我們的郵箱設置
我這邊使用的是QQ郵箱,每個郵箱基本都差不多
去賬號中找到這一堆服務,找到后開啟smtp服務
開啟服務后管理服務
在這里點擊就可以獲取到授權碼啦
接下來需要去下載相應的第三方類庫(我這里使用的是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擴展->封裝一下發送郵件方法->在業務中調用即可
希望對大家有所幫助,如果覺得有用的話還請不吝三連