在我們很多的程序中都需要發(fā)送郵件去提示用戶一些相關(guān)信息,應(yīng)用的范圍還是很廣的,比如:登錄驗(yàn)證需要驗(yàn)證碼,后臺(tái)管理系統(tǒng)中有變更需要發(fā)送郵箱提示等,而且郵件的發(fā)送相較于短信發(fā)送成本更低,是 免費(fèi)的!!
那么要實(shí)現(xiàn)郵件發(fā)送需要做以下操作:
首先我們需要設(shè)置我們的郵箱客戶端授權(quán),獲取到授權(quán)碼
找到我們的郵箱設(shè)置
我這邊使用的是QQ郵箱,每個(gè)郵箱基本都差不多
去賬號(hào)中找到這一堆服務(wù),找到后開(kāi)啟smtp服務(wù)
開(kāi)啟服務(wù)后管理服務(wù)
在這里點(diǎn)擊就可以獲取到授權(quán)碼啦
接下來(lái)需要去下載相應(yīng)的第三方類(lèi)庫(kù)(我這里使用的是PHPMailer)
直接使用composer安裝擴(kuò)展phpmailer
composer require phpmailer/phpmailer
在thinkPHP中封裝一下郵件服務(wù)類(lèi)
我把它封裝在了application目錄下的common.php公共類(lèi)中,下面是代碼:
// 應(yīng)用公共文件
namespace app;
class Common
{
// 應(yīng)用公共文件
/**
* 郵件發(fā)送
* @param email 郵箱號(hào),發(fā)送給誰(shuí)
* @param code 郵件內(nèi)容
*/
public function send_code_to_email($email, $code)
{
Vendor('PHPMailer.PHPMailerAutoload');//這里引入一下剛才安裝擴(kuò)展的自動(dòng)加載類(lèi)
$mail = new \PHPMailer(); // 實(shí)例化類(lèi),新建
$mail->isSMTP(); // 開(kāi)啟SMTP
$mail->CharSet = 'utf8'; // 設(shè)置編碼
$mail->Host = 'smtp.qq.com'; // SMTP服務(wù)器
$mail->SMTPAuth = true; // smtp需要鑒權(quán) 這個(gè)必須是true
$mail->Username = ''; // 發(fā)信人的賬號(hào),這個(gè)需要是開(kāi)啟stmp服務(wù)的郵箱號(hào)
$mail->Password = ""; // 密碼,非郵箱密碼,是SMTP生成的密碼,也就是授權(quán)碼
$mail->From = ''; // 發(fā)信人的地址
$mail->SMTPSecure = 'ssl'; // 采用ssl協(xié)議,這里采用了加密,端口需要進(jìn)行開(kāi)放:465或587
$mail->Port = 465; // 端口號(hào)
$mail->FromName = ""; // 發(fā)件人昵稱(chēng)
$mail->addAddress($email); // 收信人地址
$mail->addReplyTo($email); //回復(fù)的時(shí)候回復(fù)的郵箱,建議和發(fā)信人一樣
$mail->Subject = ""; // 郵件主題,看自己需求
$mail->Body = $code; // 郵件內(nèi)容
if (!$mail->send()) {
return json([400, $mail->ErrorInfo]);
} else {
return json([200, '驗(yàn)證碼已經(jīng)發(fā)送成功']);
}
}
}
我這邊是只封裝了收件人和郵件內(nèi)容,看具體業(yè)務(wù)需求,可以將主題,發(fā)件人昵稱(chēng)也封裝一下
實(shí)際調(diào)用
在需要調(diào)用的地方進(jìn)行調(diào)用就可以了,當(dāng)然要先將公共類(lèi)引入
在需要調(diào)用的控制器文件中的命名空間下使用use引入
use app\Common;
調(diào)用函數(shù)
/**
* 電子郵件
* @param string $email郵箱號(hào)
* @param string $code郵件內(nèi)容
* 具體到common應(yīng)用公共函數(shù)文件內(nèi)找senf_code_to_email方法
*/
public function sends()
{
$email = input('email');//獲取到收件人
$code = input('code');//獲取到郵件內(nèi)容
$send = new Common();//實(shí)例化公共類(lèi)
return $send->send_code_to_email($email, $code);//調(diào)用封裝好的方法
}
效果
我這邊直接用網(wǎng)頁(yè)url調(diào)用了一下
收到郵件:
總結(jié)
總體其實(shí)還是比較簡(jiǎn)單的,需要注意如果不使用ssl安全協(xié)議的話端口是25,不過(guò)阿里云是強(qiáng)制ssl安全的,所以最好還是使用465端口比較好
到郵箱中授權(quán)開(kāi)啟獲取授權(quán)碼->在thinkPHP框架中使用composer安裝PHPMailer擴(kuò)展->封裝一下發(fā)送郵件方法->在業(yè)務(wù)中調(diào)用即可文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-639193.html
希望對(duì)大家有所幫助,如果覺(jué)得有用的話還請(qǐng)不吝三連文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-639193.html
到了這里,關(guān)于PHP 使用ThinkPHP實(shí)現(xiàn)電子郵件發(fā)送示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!