網站使用TP3.2開發,須要使用SMTP郵件註冊驗證功能,網上研究不少內容,本身嘗試而且整理以下 postbrid : There I am , in the world more exciting! www.ptbird.cnphp
轉載請註明來源: http://www.ptbird.cn/2016/07/02/thnikphp/html
1. 下載PHPmailer並copy到目錄 2. 進行config配置 3. 函數sendmail實現主要功能 4. 重要錯誤指出
1、下載PHPmailer並copy到網站目錄中 一、OSC上的內容:http://www.oschina.net/p/phpmailer/ 二、壓縮包中不少東西是沒有用的,做爲不研究直接使用來講,只要保留如下文件便可linux
* class.phpmailer.php * class.smtp.php * class.pop3.php
三、將文件夾phpmailer複製到TP的Library/Vendor文件夾下(PHPmailer屬於第三方類庫,而且命名規範不符合TP的要求,因此應當使用第三方類庫Vendor方式打開)以下圖: 四、請注意文件夾名和文件名* 1) *Vendor引入的時候 Vendor(‘phpmailer.class#phpmailer’); 2) 爲何使用#呢? phpmailer表明文件夾 . 後面的表明文件名 class.phpmailer(請比對圖片) 3) 將 . 換成 # 能夠避免在解析的時候解析出錯,由於從根本原理上講 vendor 也是經過import實現的(具體可參照TP官方文檔) 2、進行config配置 copy到網站目錄後就能進行配置工做。 ! 其中爲了方便測試,直接在 TP/Conf/convention.php 中添加配置以下: ! 關於如何申請SMTP以及獲取SMTP密碼能夠參照(http://jingyan.baidu.com/article/495ba841ecc72c38b30ede38.html)數組
// 配置郵件發送服務器 'MAIL_SMTP' =>TRUE, 'MAIL_HOST' =>'smtp.163.com',//郵件發送SMTP服務器 'MAIL_SMTPAUTH' =>TRUE, 'MAIL_USERNAME' =>'hellomarker@163.com',//SMTP服務器登錄用戶名 'MAIL_PASSWORD' =>'x****************z',//SMTP服務器登錄密碼 'MAIL_SECURE' =>'tls', 'MAIL_CHARSET' =>'utf-8', 'MAIL_ISHTML' =>TRUE,服務器
3、3.1 | 函數sendmail實現主要功能 爲了方便在全局使用,因此將sendMail()定義成了全局數組,定義在 TP/Common/functions.php 中 以後在任何地方均可以無條件調用。 下述是基本完整的郵件配置信息,具體可參照網上關於PHPMAILER的介紹。 C中的參數都是經過2中配置獲得的 *須要注意的問題是:函數
* $mail = new \PHPMailer(); 在實例化PHPMailer的時候,應當使用 new \PHPMailer(); * * 否則會出現 可能會出現 Class phpmailer not found! 的錯誤 * 引入的文件 Vendor(‘phpmailer.class#phpmailer’);詳細見上文所述緣由
//郵件發送 function sendMail($to, $subject, $content) { Vendor('phpmailer.class#phpmailer'); $mail = new \PHPMailer(); //實例化 // 裝配郵件服務器 if (C('MAIL_SMTP')) { $mail->IsSMTP(); //啓動SMTP } $mail->Host = C('MAIL_HOST'); //SMTP服務器地址 $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //啓用SMTP認證 $mail->Username = C('MAIL_USERNAME');//郵箱名稱 $mail->Password = C('MAIL_PASSWORD');//郵箱密碼 $mail->SMTPSecure = C('MAIL_SECURE');//發件人地址 $mail->CharSet = C('MAIL_CHARSET');//郵件頭部信息 $mail->From = C('MAIL_USERNAME');//發件人是誰 $mail->AddAddress($to); $mail->FromName = 'Marker | pop';//設置每行字符長度 $mail->IsHTML(C('MAIL_ISHTML'));//是不是HTML字樣 $mail->Subject = $subject;// 郵件標題信息 $mail->Body = $content;//郵件內容 // 發送郵件 if (!$mail->Send()) { return FALSE; } else { return TRUE; }post
3、3.2 | 函數sendmail() 功能測試 參照sendmail解釋參數:學習
* $to -> 對應下文的 ptbird@yeah.net 是目的郵箱 * $subject -> 對應 ptbird 是發送者 * $content -> 對應 test…… 是郵件內容
public function index(){ if(SendMail('ptbird@yeah.net','ptbird','test email by postbird!')){ $this->show('success'); } }測試
4、錯誤提出網站
* 類沒法引入: * * 文件夾的名稱在Vendor是否正確 * . # 是否出現問題(該問題通常在linux上出現) * 引入文件路徑的大小寫問題 * 特例: * * 出現 CLASS SMPT NOT FOUND 是 PHPmailer的文件錯誤,請下載正確文件 * 其餘錯誤: * * 網上不少就不在這裏一一贅述,關於報錯的緣由請參照PHPMAILER的錯誤信息判斷。
歡迎指正!By postbird 學習參照 :http://my.oschina.net/BearCatYN/blog/299192