前段時間寫了一篇博客:thinkphp集成系列之短信驗證碼、訂單通知php
說了這是一個短信通知氾濫的年代;大部分網站的郵箱註冊都已經被短信註冊所取代;html
可是郵件和短信相比在一些場景依然有着重要的意義和優點;git
1:零成本;發郵件沒有費用;thinkphp
2:內容豐富且量大;郵件能夠長篇大論;圖文並茂;數組
3:增長訪問量;用戶很容易經過郵件中的連接訪問網站;服務器
好了;下面來來爲thinkphp集成郵件系統;函數
示例項目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin網站
一:引入phpmailui
從示例項目中複製兩個文件到本身的項目;編碼
/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('baijunyao@baijunyao','郵件標題','郵件內容');
// 若是羣發郵件 則傳入數組便可
$emails=array('b1@baijunyao.com','b2@baijunyao.com');
send_email($emails,'郵件標題','郵件內容');
本文爲白俊遙原創文章,轉載無需和我聯繫,但請註明來自白俊遙博客http://baijunyao.com