注意事項
開啟socket:在PHP.ini中取消extension=php_sockets.dll前面的分號与殃。
.登錄你的郵箱手動開啟STMP服務(wù)普碎,這個服務(wù)默認(rèn)是關(guān)閉的烈疚,一定要去郵箱->設(shè)置里去手動開啟该互,開啟時要求你設(shè)置一個獨(dú)立密碼吁系,這個密碼就是寫在 'MAIL_PASSWORD'=>' ', // 郵箱密碼购披,的密碼而不是郵箱登錄密碼
userinfo中加上一個字段Resettime(郵箱提交時間杖挣,和當(dāng)前時間比較,判斷鏈接是否過期)
1刚陡、? ? ? 在ThinkPHP/Extend/Library/ORG/Net/目錄下放入PHPMailer.class.php惩妇、class.pop3.php、class.smtp.php文件
2筐乳、? ? ? ? 在Index/Conf/config.php配置文件中加上以下配置項//發(fā)送郵件? 'MAIL_ADDRESS' => '18782227612@163.com', // 郵箱地址(注冊時好像會有一個地址)? 'MAIL_SMTP' => 'smtp.163.com', // 郵箱SMTP服務(wù)器? 'MAIL_LOGINNAME' => 'm18782227612_2@163.com', // 郵箱登錄帳號? 'MAIL_PASSWORD' => 'bviqbapkcyyrrtmf', // 郵箱密碼(這是我開啟STMP服務(wù)時給的授權(quán)密碼歌殃,注意看注意事項第2點(diǎn))? 'MAIL_CHARSET' => 'UTF-8', // 編碼? 'MAIL_AUTH' => true, // 郵箱認(rèn)證? 'MAIL_HTML' => true, // true HTML格式 false TXT格式
3、? ? ? ? 在Index/Common /common.php文件中建一個函數(shù)IsSMTP();// 設(shè)置郵件的字符編碼蝙云,若不指定氓皱,則為'UTF-8'$mail->CharSet='UTF-8';// 添加收件人地址,可以多次使用來添加多個收件人$mail->AddAddress($address);// 設(shè)置郵件正文$mail->Body=$message;// 設(shè)置郵件頭的From字段勃刨。$mail->From=C('MAIL_ADDRESS');// 設(shè)置發(fā)件人名字$mail->FromName='zyimm';// 設(shè)置郵件標(biāo)題$mail->Subject=$title;// 設(shè)置SMTP服務(wù)器波材。$mail->Host=C('MAIL_SMTP');// 設(shè)置為“需要驗(yàn)證”$mail->SMTPAuth=true;// 設(shè)置用戶名和密碼。$mail->Username=C('MAIL_LOGINNAME');$mail->Password=C('MAIL_PASSWORD');// 發(fā)送郵件身隐。return($mail->Send());}?
4廷区、? ? ? ? 在Index/Lib/Action/IndexAction.class.php中加入以下兩個方法? //找回密碼---發(fā)送到郵箱,用戶驗(yàn)證? public function sendemail() {? ? ? import('ORG.Net.PHPMailer');? ? ? $r = M('userinfo')->where(array('Loginname' => I('username'),'Email' => I('email')))->find();? ? ? $this->user = $r;? ? ? if (!$r) {? ? ? ? ? echo 'alert("該用戶不存在或者郵箱不正確贾铝!");location.href="http://localhost/jiaxiao2/index.php/Index/findpwd"';? ? ? } else {? ? ? ? ? $user = I('username');? ? ? ? ? $email = I('email');? ? ? ? ? $content = "$user,你好:? ? ? ? ? ? ? 您收到這封電子郵件是因?yàn)槟?(也可能是某人冒充您的名義) 申請了一個找回密碼的請求隙轻。? ? ? 假如這不是您本人所申請, 或者您曾持續(xù)收到這類的信件騷擾, 請您盡快聯(lián)絡(luò)管理員埠帕。? ? ? 您可以點(diǎn)擊如下鏈接重新設(shè)置您的密碼,如果點(diǎn)擊無效,請把下面的代碼拷貝到瀏覽器的地址欄中:? ? ? http://localhost/jiaxiao2/index.php/Index/findpassword?Loginname=$user? ? ? 在訪問鏈接之后, 您可以重新設(shè)置新的密碼玖绿。";? ? ? ? ? $rs = SendMail($email, '民大駕校---用戶密碼找回', $content,'manager'); //SendMail('admin@waikucms.com','郵件標(biāo)題','郵件正文','歪酷CMS管理員');解釋下參數(shù): 參數(shù)1---目標(biāo)郵箱, 參數(shù)2----郵件標(biāo)題,參數(shù)三--郵件正文,參數(shù)四---發(fā)件人名稱;? ? ? ? ? if ($rs) {? ? ? ? ? ? ? M('userinfo')->where(array('Loginname' => I('username'), 'Email'=> I('email')))->save(array('Resettime' => date('Y-m-d H:i:s')));? ? ? ? ? ? ? ? echo'alert("系統(tǒng)已將重置密碼的鏈接安全的發(fā)到了您的郵箱敛瓷,請及時查收!");location.href="http://localhost/jiaxiao2/index.php/?n=1"';? ? ? ? ? } else {? ? ? ? ? ? ? ? echo'alert("郵件發(fā)送失敯叻恕呐籽!");location.href="http://localhost/jiaxiao2/index.php/Index/findpwd"';? ? ? ? ? }? ? ? }? }? ? //找回密碼? //郵箱有效期? 從數(shù)據(jù)庫取出發(fā)送郵件的提交時間,和當(dāng)前時間做對比蚀瘸,如果當(dāng)前時間超過提交時間30分绝淡,則過期? public function findpassword(){? ? ? $username = I('Loginname');? ? ? $user = M('userinfo')->where(array('Loginname' =>$username))->select();? ? ? $this->user = $user;? ? ? $u = M('userinfo')->where(array('Loginname' =>$username))->find();? ? ? $resettime = $u['Resettime']; //獲取數(shù)據(jù)庫郵箱發(fā)送時間? ? ? $time = date("Y-m-d H:i:s", strtotime("-30 min"));//當(dāng)前時間減去30分后還小于等于發(fā)送郵箱時間,則時間有效苍姜,反之過期? ? ? $data = array('Password' => md5(I('password')));? ? ? $rs = M('userinfo')->where(array('Loginname' => I('Loginname')))->save($data);? ? ? if ($resettime >= $time) {? ? ? ? ? if ($rs) {? ? ? ? ? ? ? ? echo'alert("修改密碼成功牢酵!");location.href="http://localhost/jiaxiao2/index.php/?n=1"';? ? ? ? ? }? ? ? } else {? ? ? ? ? echo 'alert("該鏈接已經(jīng)過期!");location.href="http://localhost/jiaxiao2/index.php/?n=1"';? ? ? }? ? ? $this->display();}
5衙猪、? ? ? ? 然后在在Index/Tpl/Index中加入以下兩個html文件Findpwd.html找回密碼
返回用戶名
郵箱
Findpassword.html文件找回密碼
返回
用戶名
新的密碼
確認(rèn)新密碼
6馍乙、? ? ? ? 然后在登錄頁面加上相應(yīng)的鏈接在Index/Tpl/common/top.html和indextop.html中學(xué)員和教練后面加上忘記登錄密碼?