PHPMailer是一個郵件發送插件了,我們可以把PHPMailer安裝包解壓到Vendor目錄中之后然后簡單的配置就可以發郵件了,下面來看一個例子.
最近一直在用ThinkPHP框架開發項目,一般進行用戶注冊的時候都會發送一封驗證郵件,驗證注冊,在這次做的CRM客戶管理系統中需要用到邀請注冊這個功能,團隊管理員注冊之后可通過郵件邀請團隊的其他人員進行注冊,如何給團隊人員發送郵件,很流行的一個郵件發送類庫就是PHPMailer.
1.下載PHPmailer并解壓到ThinkPHP\Extend\Vendor文件夾下
2.用ThinkPHP自帶的Vendor方法載入第三方類庫
3.配置相關參數.
4.為了方便隨意調用,在common.php創建一個發送郵件的函數,之后就可以調用此函數發送郵件了.
- /**
- * 郵件發送
- */
- function sendMail(){
- // 載入郵件發送類庫
- Vendor('PHPMailer.PHPMailerAutoload');
- $mail = new PHPMailer;
- $mail->isSMTP(); //設置PHPMailer使用SMTP服務器發送Email
- $mail->Host = 'smtp.163.com'; //指定SMTP服務器 可以是smtp.126.com, gmail, qq等服務器 自行查詢
- $mail->SMTPAuth = true;
- $mail->CharSet='UTF-8'; //設置字符集 防止亂碼
- $mail->Username = 'username@163.com'; //發送人的郵箱賬戶
- $mail->Password = 'xxxxxxxxxx'; //發送人的郵箱密碼
- $mail->Port = 25; //SMTP服務器端口
- $mail->From = 'user@admin.com'; //發件人郵箱地址
- $mail->FromName = '在路上'; //發件人名稱
- $mail->addAddress('guest@test.com'); // 收件人郵箱地址 此處可以發送多個
- $mail->WordWrap = 50; // 換行字符數
- $mail->isHTML(true); // 設置郵件格式為HTML
- $mail->Subject = '青島XXX'; //郵件標題
- $mail->Body = '尊敬的先生/女士:<br/>非常抱歉,您接受到這封郵件是因您的好友邀請您加入我們的CRM系統體驗當中,請點擊以下鏈接注冊賬戶<a href=####>######</a><br/>如您沒有相關意向,請忽略';
- if(!$mail->send()) { //開源軟件:Vevb.com
- echo '郵件發送失敗.';
- echo '錯誤信息: ' . $mail->ErrorInfo;
- } else {
- echo '郵件發送成功';
- }
- }
定義好函數之后,如果想發送郵件,直接調用 sendMail();
可把發送內容,發送標題,收件人全部設置為變量,例如:sendMail($body,$title,$recipient) 收件人可為數組的形式,在函數里面循環一下就搞定啦!!SMTP服務器以及發件人的一些配置可以寫到Conf\config.php文件中,直接C()方法調用即可。
方法二
第一步 先下載PHPMailer.class.php壓縮包,解壓后會有如下的三個文件:
1.class.pop3.php
2.class.smtp.php
3.PHPMailer.class.php
PHPMailer.class.php這個文件就是核心的文件,把這個文件放到ThinkPHP的擴展包下路徑如\下:ThinkPHP\Extend\Library
第二步 在ThinkPHP,common文件中新建一個common.php文件寫入如下代碼:
- functionSendMail($address,$title,$message)
- {
- import('ORG.Net.PHPMailer');
- $mail=newPHPMailer();
- // 設置PHPMailer使用SMTP服務器發送Email
- $mail->IsSMTP();
- // 設置郵件的字符編碼,若不指定,則為'UTF-8'
- $mail->CharSet='UTF-8';
- // 添加收件人地址,可以多次使用來添加多個收件人
- $mail->AddAddress($address);
- // 設置郵件正文
- $mail->Body=$message;
- // 設置郵件頭的From字段。
- $mail->From=C('MAIL_ADDRESS');
- // 設置發件人名字
- $mail->FromName='zyimm';
- // 設置郵件標題
- $mail->Subject=$title;
- // 設置SMTP服務器。
- $mail->Host=C('MAIL_SMTP');
- // 設置為“需要驗證”
- $mail->SMTPAuth=true;
- // 設置用戶名和密碼。
- $mail->Username=C('MAIL_LOGINNAME');
- $mail->Password=C('MAIL_PASSWORD');
- // 發送郵件。
- return($mail->Send());
第三步 在ThinkPHP,conf.php文件寫入如下代碼.
注意:以下是的我自己QQ郵箱的測試的,每個郵箱參數不同,具體以郵箱為準,qq郵箱的stmp需要自己到郵箱開啟的.
- returnarray(
- //'配置項'=>'配置值'
- 'MAIL_ADDRESS'=>'799783009@qq.com', // 郵箱地址
- 'MAIL_LOGINNAME'=>'799783009@qq.com', // 郵箱登錄帳號
- 'MAIL_SMTP'=>'smtp.qq.com', // 郵箱SMTP服務器
- 'MAIL_PASSWORD'=>'******', // 郵箱密碼
- 'SHOW_PAGE_TRACE'=>true,
- );
第四步 剩下使用了,在ThinkPHP,IndexAction.class.php文件寫入如下代碼:
- // 本類由系統自動生成,僅供測試用途
- classIndexAction extendsAction {
- publicfunctionindex(){
- if(!emptyempty($_POST['title']) && !emptyempty($_POST['content'])){
- if(SendMail("597417106@qq.com",$_POST['tile'],$_POST['content']))
- echo'發送成功!';
- else
- echo'發送失敗';
- }
- $this->assign('title','測試標題');
- $this->display();
- }
- }
好了,就這么簡單的,方法二算是一個標準的方法了,整體都放到thinkphp類中了,小編推薦使用第二種方案.
新聞熱點
疑難解答
圖片精選