一、開啟SMTP服務(使用php發送郵件需要用到SMTP服務,這里以QQ郵箱的SMTP服務為例)
1.登錄qq郵箱,在首頁上找到“設置”。
2.選擇開啟的服務,一般都全選,POP3/SMTP/IMAP,開啟SMTP服務就得先開通客戶授權碼。
3.點擊開通客戶授權碼,選擇開啟
4.需要手機驗證碼,需要綁定手機號。
5.SMTP服務需要輸入客戶端授權密碼,這個密碼就是是你在第三方客戶端上的郵箱登錄密碼(在后面使用phpmailer發送郵件時會用到),如果在第三方客戶端上輸入之前的郵箱登錄密碼就會出錯。
6.設置完客戶端授權密碼后就成功開通了SMTP服務
二、首先下載phpmailer壓縮包
在tp6的項目中的extend目錄下新建一個phpmailer文件夾
composer require phpmailer/phpmailer
然后把phpmailer.php 和smtp.php文件復制到目錄下(只有這兩個文件有用) 修改命名空間
添加phpmailer中添加 use think\Exception
此外要確保安裝了 openssl擴展
三、發送郵件函數
/**
* [向郵箱發送驗證碼]
* @param [String] $email [目標emial]
* @param [Number] $code [驗證碼]
* @return [json] [執行結果]
*/
public function sendCodeToEmail($email, $code)
{
$toemail = $email;
$mail = new PHPMailer();
$mail->isSMTP(); //使用smtp鑒權方式發送郵件
$mail->CharSet = 'utf8'; //設置編碼
$mail->Host = 'smtp.qq.com'; //qq郵箱smtp郵箱
$mail->SMTPAuth = true; //是否需要認證身份
$mail->Username = "123456789@qq.com"; //發送方郵箱
$mail->Password = "**********"; //發送方smtp密碼
$mail->SMTPSecure = 'ssl'; //使用的協議
$mail->Port = 465; //qq郵箱接收的端口號
$mail->setFrom('123456789@qq.com', '驗證碼發送'); //定義郵件及標題(不同郵件標題顯示不一致)
$mail->addAddress($toemail, '您好!'); //要發送的地址和設置地址的昵稱
$mail->addReplyTo('123456789@qq.com', 'Replay'); //回復地址
$mail->Subject = "您有新的驗證碼!"; //添加該郵件的主題
$mail->Body = "您的驗證碼是" . $code . ",驗證碼的有效期為600秒,本郵件請勿回復!"; //該郵件內容
//如果發送失敗
if (!$mail->send()) {
$this->return_msg(400, $mail->ErrorInfo);
} else {
$this->return_msg(200, '驗證碼發送成功,請注意查收!');
}
}