發送郵件的兩個方法,博主已經親自測試成功 1.TP官網方法
(http://www.thinkphp.cn/extend/248.html)
a).引入函數庫:Email.class.php放在component檔案夾下
b).設定檔:common/Conf/config.php中加入如下:
'SMTP_SERVER' =>'smtp.163.com', //郵件伺服器 'SMTP_PORT' =>'25', //郵件伺服器連接埠 'SMTP_USER_EMAIL' =>'@163.com', //SMTP伺服器的使用者郵箱(一般寄件者也得用這個郵箱) 'SMTP_USER'=>'@163.com', //SMTP伺服器賬戶名 'SMTP_PWD'=>'授權密碼', //SMTP伺服器賬戶密碼 'SMTP_MAIL_TYPE'=>'HTML', //發送郵件類型:HTML,TXT(注意都是大寫) 'SMTP_TIME_OUT'=>30, //逾時時間 'SMTP_AUTH'=>true,
c).實際調用:controller.php,直接可以在控制器中應用,如下
$mail = new \Component\Email(); $data['mailto'] = "123456@qq,.com"; //收件者 $data['subject'] = '歡迎註冊網站'; //郵件標題 $data['body'] = "郵件內文內容"; //郵件內文內容 if($mail->send($data)) { //郵件發送成功... } else { //郵件發送失敗... }
2.類庫
a).引入函數庫,PHPMailer移動到thinkphp裡的library\Vendorb).設定檔,common/Conf/config.php中加入如下:
// // 配置郵件發送伺服器 'MAIL_HOST' =>'smtp.163.com',//smtp伺服器的名稱smtp.exmail.qq.com 'MAIL_SMTPAUTH' =>TRUE, //啟用smtp認證renxiaole66@126.com 'MAIL_USERNAME' =>'@163.com',//你的郵箱名 'MAIL_FROM' =>'@163.com',//寄件者地址 'MAIL_FROMNAME'=>'MR.峰',//寄件者姓名 'MAIL_PASSWORD' =>'授權密碼',//郵箱授權密碼 'MAIL_CHARSET' =>'utf-8',//設定郵件編碼 'MAIL_ISHTML' =>TRUE, // 是否HTML格式郵件
c).引入函數,common/common/function.php,建立此php檔案,後邊用時架構會自動載入
function SendMail($to, $title, $content) { Vendor('PHPMailer.PHPMailerAutoload'); $mail = new PHPMailer(); //執行個體化 $mail->IsSMTP(); // 啟用SMTP $mail->Host=C('MAIL_HOST'); //smtp伺服器的名稱(這裡以QQ郵箱為例) $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //啟用smtp認證 $mail->Username = C('MAIL_USERNAME'); //你的郵箱名 $mail->Password = C('MAIL_PASSWORD') ; //郵箱密碼 $mail->From = C('MAIL_FROM'); //寄件者地址(也就是你的郵箱地址) $mail->FromName = C('MAIL_FROMNAME'); //寄件者姓名 $mail->AddAddress($to,"尊敬的客戶"); $mail->WordWrap = 50; //設定每行字元長度 $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式郵件 $mail->CharSet=C('MAIL_CHARSET'); //設定郵件編碼 $mail->Subject =$title; //郵件主題 $mail->Body = $content; //郵件內容 $mail->AltBody = "這是一個純文字的身體在非營利的HTML電子郵件用戶端"; //郵件內文不支援HTML的備用顯示 return($mail->Send()); }
d).實際調用:controller.php,直接可以在控制器中應用,如下
if(SendMail("$_POST[user_email]",'歡迎註冊網站',"$message")){ $this->success('發送成功,請啟用後登入',U('login')); }else{ $this->error('發送失敗'); } }else{//add()失敗 // echo "error"; $this->error('註冊失敗',U('register')); }
注意:
1.在配置郵箱的帳號密碼時,密碼為SMTP的【授權密碼】,與你的登入密碼是不一樣的,
否則提示: 535 authentication failed
2.必須開啟SMTP服務,以163郵箱為例子:
這樣的話,使用者註冊啟用,使用者找回密碼等等,不都能實現了嗎。o(∩_∩)o