天天看點

thinkphp5中使用phpmailer實作發送郵件功能--真實管用的哦!

怎麼開啟什麼的就不介紹了,一搜一大把,最重要的是檔案的部署也就是細節一定要注意!這裡就說細節了,很多網上的都不行,不是這兒錯就是那兒錯,瞎耽誤别人工夫。。。

好了,進入正題:

一、下載下傳好phpmailer後就可以開始了:

連結: https://pan.baidu.com/s/1mhyCtu3bcvWn92foLR_RQw 提取碼: rzsu 

這是下載下傳位址,也可以在最下面下載下傳修改好的,好了開始吧!

二、解壓之後,裡面的許多檔案都沒有用到,然後再thinkphp5的項目中的extend目錄下建立一個phpmailer檔案夾,然後把class.phpmailer.php和class.smtp.php檔案複制到phpmailer目錄下。

三、phpmailer的代碼實作 1、使用phpmailer時,需要用到php的openssl擴充,在php.ini中開啟。 2.首先注意,thinkphp5中的extend下的擴充類庫使用的是命名空間必須在class.phpmailer.php和class.smtp.php最開頭加上。

namespace phpmailer;
           

如下圖:

thinkphp5中使用phpmailer實作發送郵件功能--真實管用的哦!

在class.phpmailer.php中的2315行使用到了php的Exception異常類,在thinkphp架構中直接繼承,thinkphp找不到Exception是以要修改如下;

thinkphp5中使用phpmailer實作發送郵件功能--真實管用的哦!

四、在使用phpmailer時,執行個體化PHPMailer(),需要使用命名空間。

這裡有一個問題,thinkphp5的擴充類的定義是,類檔案命名為:phpmailer.php而不是class.phpmailer.php。是以要把class.phpmailer.php重命名為PHPMailer.php,class.stmp.php重命名為STMP.php。

五、然後,在控制器中用use引入

use phpmailer\phpmailer;
           

如下圖: 

<?php 
	namespace app\admin\controller;
	use think\Controller;
	use phpmailer\phpmailer;
	class Index extends Controller
	{
		
		//發送郵箱驗證碼
		public function email()
		{
			$toemail = '[email protected]';//定義收件人的郵箱
 
			$mail = new PHPMailer();
 
			$mail->isSMTP();// 使用SMTP服務
			$mail->CharSet = "utf8";// 編碼格式為utf8,不設定編碼的話,中文會出現亂碼
			$mail->Host = "smtp.163.com";// 發送方的SMTP伺服器位址
			$mail->SMTPAuth = true;// 是否使用身份驗證
			$mail->Username = "[email protected]";</span><span style="color:#ff6666;">// 發送方的163郵箱使用者名,就是你申請163的SMTP服務使用的163郵箱</span><span style="color:#333333;">
			$mail->Password = "xxxxxx";</span><span style="color:#ff6666;">// 發送方的郵箱密碼,注意用163郵箱這裡填寫的是“用戶端授權密碼”而不是郵箱的登入密碼!</span><span style="color:#333333;">
			$mail->SMTPSecure = "ssl";</span><span style="color:#ff6666;">// 使用ssl協定方式</span><span style="color:#333333;">
			$mail->Port = 994;// 163郵箱的ssl協定方式端口号是465/994
 
			$mail->setFrom("[email protected]","Mailer");// 設定發件人資訊,如郵件格式說明中的發件人,這裡會顯示為Mailer([email protected]),Mailer是當做名字顯示
			$mail->addAddress($toemail,'Wang');// 設定收件人資訊,如郵件格式說明中的收件人,這裡會顯示為Liang([email protected])
			$mail->addReplyTo("[email protected]","Reply");// 設定回複人資訊,指的是收件人收到郵件後,如果要回複,回複郵件将發送到的郵箱位址
			//$mail->addCC("[email protected]");// 設定郵件抄送人,可以隻寫位址,上述的設定也可以隻寫位址(這個人也能收到郵件)
			//$mail->addBCC("[email protected]");// 設定秘密抄送人(這個人也能收到郵件)
			//$mail->addAttachment("bug0.jpg");// 添加附件
 
 
			$mail->Subject = "這是一個測試郵件";// 郵件标題
			$mail->Body = "郵件内容是 <b>您的驗證碼是:123456</b>,哈哈哈!";// 郵件正文
			//$mail->AltBody = "This is the plain text純文字";// 這個是設定純文字方式顯示的正文内容,如果不支援Html方式,就會用到這個,基本無用
 
			if(!$mail->send()){// 發送郵件
			    echo "Message could not be sent.";
			    echo "Mailer Error: ".$mail->ErrorInfo;// 輸出錯誤資訊
			}else{
			    echo '發送成功';
			}
		}
	}
 ?>
           

六、在PHPmailer.php裡面的704行,把class.去掉即可,也就是剩下了smtp.php

thinkphp5中使用phpmailer實作發送郵件功能--真實管用的哦!

這樣就可以了!

注意:如果要在阿裡雲伺服器上面使用的話,接口要使用465,$mail->Port = 994改成$mail->Port = 465;

PHPmailer.php裡面的704行要改成SMTP.php,要大寫,否則失敗。

這是修改好的檔案下載下傳位址:

連結: https://pan.baidu.com/s/1CbZt3MS1xFMwrZ0p3OXX7A 提取碼: i23j 

這樣第六步就省下了,網上的教程很多細節都是問題,有的甚至少個字母,這樣的細節問題最是折騰新手!

如果幫到了你就點個贊吧