thinkphp整合系列之phpmailer批量傳送郵件
阿新 • • 發佈:2019-01-10
說了這是一個簡訊通知氾濫的年代;大部分網站的郵箱註冊都已經被簡訊註冊所取代;
但是郵件和簡訊相比在一些場景依然有著重要的意義和優勢;
1:零成本;發郵件沒有費用;
2:內容豐富且量大;郵件可以長篇大論;圖文並茂;
3:增加訪問量;使用者很容易通過郵件中的連結訪問網站;
好了;下面來來為thinkphp整合郵件系統;
一:引入phpmail
從示例專案中複製兩個檔案到自己的專案;
/ThinkPHP/Library/Org/Nx/class.phpmailer.php ;
/ThinkPHP/Library/Org/Nx/class.smtp.php ;
不要從官網上下載;因為下載的phpmail直接引入thinkphp是有一些坑會報錯的;
具體報什麼錯;年代久遠;當年整合的時候沒有記錄;
二:設定配置項
/Application/Common/Conf/config.php
'EMAIL_FROM_NAME' => '', // 發件人
'EMAIL_SMTP' => '', // SMTP伺服器
'EMAIL_USERNAME' => '', // 賬號
'EMAIL_PASSWORD' => '', // 密碼
如果使用163郵箱;此處有一個坑;首先是要開啟smtp;
開啟過程中是要設定一個授權密碼;開啟完成;又一個坑也就同步挖好了;
配置項中的EMAIL_PASSWORD 指的不是163郵箱的登入密碼;而是授權密碼;
否則SMTP connect() failed;
三:傳送郵件
/** * 傳送郵件 * @param string $address 需要傳送的郵箱地址 傳送給多個地址需要寫成陣列形式 * @param string $subject 標題 * @param string $content 內容 * @return boolean 是否成功 */ function send_email($address,$subject,$content){ $email_smtp=C('EMAIL_SMTP'); $email_username=C('EMAIL_USERNAME'); $email_password=C('EMAIL_PASSWORD'); $email_from_name=C('EMAIL_FROM_NAME'); if(empty($email_smtp) || empty($email_username) || empty($email_password) || empty($email_from_name)){ return array("error"=>1,"message"=>'郵箱配置不完整'); } require './ThinkPHP/Library/Org/Nx/class.phpmailer.php'; require './ThinkPHP/Library/Org/Nx/class.smtp.php'; $phpmailer=new \Phpmailer(); // 設定PHPMailer使用SMTP伺服器傳送Email $phpmailer->IsSMTP(); // 設定為html格式 $phpmailer->IsHTML(true); // 設定郵件的字元編碼' $phpmailer->CharSet='UTF-8'; // 設定SMTP伺服器。 $phpmailer->Host=$email_smtp; // 設定為"需要驗證" $phpmailer->SMTPAuth=true; // 設定使用者名稱 $phpmailer->Username=$email_username; // 設定密碼 $phpmailer->Password=$email_password; // 設定郵件頭的From欄位。 $phpmailer->From=$email_username; // 設定發件人名字 $phpmailer->FromName=$email_from_name; // 新增收件人地址,可以多次使用來新增多個收件人 if(is_array($address)){ foreach($address as $addressv){ $phpmailer->AddAddress($addressv); } }else{ $phpmailer->AddAddress($address); } // 設定郵件標題 $phpmailer->Subject=$subject; // 設定郵件正文 $phpmailer->Body=$content; // 傳送郵件。 if(!$phpmailer->Send()) { $phpmailererror=$phpmailer->ErrorInfo; return array("error"=>1,"message"=>$phpmailererror); }else{ return array("error"=>0); } }
傳送郵件呼叫函式;
send_email('[email protected]','郵件標題','郵件內容');
// 如果群發郵件 則傳入陣列即可
$emails=array('[email protected]','[email protected]');
send_email($emails,'郵件標題','郵件內容');
本文為白俊遙原創文章,轉載無需和我聯絡,但請註明來自白俊遙部落格http://baijunyao.com