发送邮箱实现找回密码

注意事项

1、.开启socket:在php.ini中取消extension=php_sockets.dll前面的分号。

2.登录你的邮箱手动开启STMP服务,这个服务默认是关闭的,一定要去邮箱->设置里去手动开启,开启时要求你设置一个独立密码,这个密码就是写在
‘MAIL_PASSWORD‘=>‘ ‘, // 邮箱密码,的密码而不是邮箱登录密码

3、userinfo中加上一个字段Resettime(邮箱提交时间,和当前时间比较,判断链接是否过期)

1、     
在ThinkPHP/Extend/Library/ORG/Net/目录下放入PHPMailer.class.php、class.pop3.php、class.smtp.php文件

2、        在Index/Conf/config.php配置文件中加上以下配置项

//发送邮件

‘MAIL_ADDRESS‘ => ‘[email protected]‘, // 邮箱地址(注册时好像会有一个地址)

‘MAIL_SMTP‘ => ‘smtp.163.com‘, // 邮箱SMTP服务器

‘MAIL_LOGINNAME‘ => ‘[email protected]‘, // 邮箱登录帐号

‘MAIL_PASSWORD‘ => ‘bviqbapkcyyrrtmf‘, // 邮箱密码(这是我开启STMP服务时给的授权密码,注意看注意事项第2点)

‘MAIL_CHARSET‘ => ‘UTF-8‘, // 编码

‘MAIL_AUTH‘ => true, // 邮箱认证

‘MAIL_HTML‘ => true, // true HTML格式 false TXT格式

3、         在Index/Common /common.php文件中建一个函数

<?php

functionSendMail($address,$title,$message)

{

import(‘ORG.Net.PHPMailer‘);//导入类

$mail=new PHPMailer();

// 设置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());

}

4、        在Index/Lib/Action/IndexAction.class.php中加入以下两个方法

//找回密码---发送到邮箱,用户验证

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 ‘<script>alert("该用户不存在或者邮箱不正确!");location.href="http://localhost/jiaxiao2/index.php/Index/findpwd"</script>‘;

} else {

$user = I(‘username‘);

$email = I(‘email‘);

$content = "$user,你好:

您收到这封电子邮件是因为您 (也可能是某人冒充您的名义) 申请了一个找回密码的请求。

假如这不是您本人所申请, 或者您曾持续收到这类的信件骚扰, 请您尽快联络管理员。

您可以点击如下链接重新设置您的密码,如果点击无效,请把下面的代码拷贝到浏览器的地址栏中:

http://localhost/jiaxiao2/index.php/Index/findpassword?Loginname=$user

在访问链接之后, 您可以重新设置新的密码。";

$rs = SendMail($email, ‘民大驾校---用户密码找回‘, $content,‘manager‘); //SendMail(‘[email protected]‘,‘邮件标题‘,‘邮件正文‘,‘歪酷CMS管理员‘);解释下参数: 参数1---目标邮箱, 参数2----邮件标题,参数三--邮件正文,参数四---发件人名称;

if ($rs) {

M(‘userinfo‘)->where(array(‘Loginname‘ => I(‘username‘), ‘Email‘=> I(‘email‘)))->save(array(‘Resettime‘ => date(‘Y-m-d H:i:s‘)));

echo‘<script>alert("系统已将重置密码的链接安全的发到了您的邮箱,请及时查收!");location.href="http://localhost/jiaxiao2/index.php/?n=1"</script>‘;

} else {

echo‘<script>alert("邮件发送失败!");location.href="http://localhost/jiaxiao2/index.php/Index/findpwd"</script>‘;

}

}

}

//找回密码

//邮箱有效期   从数据库取出发送邮件的提交时间,和当前时间做对比,如果当前时间超过提交时间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‘]; //获取数据库邮箱发送时间

$time = date("Y-m-d H:i:s", strtotime("-30 min"));//当前时间减去30分后还小于等于发送邮箱时间,则时间有效,反之过期

$data = array(‘Password‘ => md5(I(‘password‘)));

$rs = M(‘userinfo‘)->where(array(‘Loginname‘ => I(‘Loginname‘)))->save($data);

if ($resettime >= $time) {

if ($rs) {

echo‘<script>alert("修改密码成功!");location.href="http://localhost/jiaxiao2/index.php/?n=1"</script>‘;

}

} else {

echo ‘<script>alert("该链接已经过期!");location.href="http://localhost/jiaxiao2/index.php/?n=1"</script>‘;

}

$this->display();

}

5、        然后在在Index/Tpl/Index中加入以下两个html文件

Findpwd.html

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<meta charset="UTF-8">

<title>找回密码</title>

<meta name="viewport"content="width=device-width">

<link rel="stylesheet"type="text/css" href="__PUBLIC__/css/reg.css" />

<scripttype="text/javascript"src="__PUBLIC__/js/jquery.js"></script>

<scripttype="text/javascript"src="__PUBLIC__/js/jquery.ui.js"></script>

<scripttype="text/javascript"src="__PUBLIC__/js/jquery.validate.js"></script>

<scripttype="text/javascript"src="__PUBLIC__/js/jquery.form.js"></script>

<scripttype="text/javascript" src="__PUBLIC__/js/reg.js"></script>

<scripttype="text/javascript">

functionrefreshVerify() {

document.getElementById(‘reverifyImg‘).src = ‘__URL__/reverify/‘ +Math.random();

}

</script>

</head>

<body>

<divclass="rwhole">

<divclass="rtop">

<p>找回密码</p>

<span>

<ahref="{:U(‘Index/Index/index‘)}?n=1">返回</a>

</span>

</div>

<divclass="rcontent">

<divclass="rcontent_left">

<formclass="reg" id="reg"action="{:U(‘sendemail‘)}" method="get" >

<p>

<span>用户名</span>

<input class="inp" type="text"name="username" id="username" />

</p>

<p>

<span>邮箱</span>

<input  class= "inp"type="text" name="email" id="pass" />

</p>

<p><input style="margin-left:95px;margin-top: 20px;width: 155px;height:36px;border: 1px solid #fff;" type="Submit"name="Submit" value="提交"/></p>

</form>

</div>

</div>

<divclass="footer"></div>

</div>

</body>

</html>

Findpassword.html文件

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<meta charset="UTF-8">

<title>找回密码</title>

<meta name="viewport"content="width=device-width">

<linkrel="stylesheet" type="text/css"href="__PUBLIC__/css/reg.css" />

<scripttype="text/javascript"src="__PUBLIC__/js/jquery.js"></script>

<scripttype="text/javascript"src="__PUBLIC__/js/jquery.ui.js"></script>

<scripttype="text/javascript"src="__PUBLIC__/js/jquery.validate.js"></script>

<scripttype="text/javascript" src="__PUBLIC__/js/jquery.form.js"></script>

<scripttype="text/javascript"src="__PUBLIC__/js/reg.js"></script>

<scripttype="text/javascript">

functionrefreshVerify() {

document.getElementById(‘reverifyImg‘).src= ‘__URL__/reverify/‘ + Math.random();

}

</script>

</head>

<body>

<divclass="rwhole">

<divclass="rtop">

<p>找回密码</p>

<span>

<ahref="{:U(‘Index/Index/index‘)}?n=1">返回</a>

</span>

</div>

<div class="rcontent">

<divclass="rcontent_left">

<formclass="reg" id="reg"action="{:U(‘findpassword‘)}" method="get" >

<p>

<volist name="user" id="user">

<span>用户名</span>

<input class="inp" type="text"name="Loginname" id="username"value="{$user.Loginname}" />

</volist>

</p>

<p>

<span>新的密码</span>

<input  class= "inp"type="password" name="password" id="pass" />

</p>

<p>

<span>确认新密码</span>

<input class="inp" type="password"name="repass" id="repass" />

</p>

<p><input style="margin-left:95px;margin-top: 20px;width: 155px;height:36px;border: 1px solid #fff;" type="Submit"name="Submit" value="提交"/></p>

</form>

</div>

</div>

<divclass="footer"></div>

</div>

</body>

</html>

6、        然后在登录页面加上相应的链接

在Index/Tpl/common/top.html和indextop.html中学员和教练后面加上

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<ahref="{:U(‘Index/Index/findpwd‘)}">忘记登录密码?</a>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-20 09:39:33

发送邮箱实现找回密码的相关文章

PHP会员找回密码功能实现实例介绍

设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名时,点击登录页面的“找回密码”超链接,打开表单,并输入注册用的E-MAIL邮箱,提交. 3.系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:12345678). 4.系统借助Jmail功能把该用户的信息发送到该用户的邮箱中(内容包括:用户名.临时密码.提醒用户及时修改临时密码的提示语). 5.用户用临时密码即可登录. HTML 我们在找回密码的页面上放置

找回密码,发送原密码到注册邮箱!

1 #region //发送邮件方法 支持带附件 2 /// <summary> 3 /// 发送edm邮件,可以附加附件 4 /// </summary> 5 /// <param name="StrTo">收件人地址</param> 6 /// <param name="strFrom">发件人地址</param> 7 /// <param name="StrBody&quo

AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码

AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型 . AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码 开篇唠嗑 本篇内容写在5.1假期前夕,主要是让大家能在节假日休息充点的时候能有好的干货例子,到目前为止netcore方面的实战例子分享即将进入正轨,谢谢各位朋友多多支持:最近工作安排的新项目即将开始,项目前期就我一人搭建,让我犹豫的是对于公司这个内部系统并且是初建的项目用什么开

Java实现邮箱找回密码

[来源网络:http://www.cnblogs.com/zyw-205520/p/3738439.html] 通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url.

Java实现邮箱找回密码 --转载

通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 邮箱 3.加密能防止

简述邮箱找回密码功能

1. 在登录页面给个链接,在找回密码界面可以输入邮箱地址和验证码,验证码是为了防止恶意找回: 2. 后台,首先判断验证码是否正确,再判断该邮箱是否注册过用户; 3. 如果该邮箱存在,检索出该用户信息; 4. 如果你的密码没有MD5加密的话,可以直接查询出密码,如果MD5加密了,只能重新生成一个密码,并修改该用户: 5. 将新生成的密码发送到用户邮箱里,用JavaMail发送邮件;

C# Email邮件发送,功能是密码找回或者重置功能。

最近根据公司需求,写个邮件发送.   这里面的传入的地址信息的参数都是经过加密的.  主要是保证用户信息的安全. 帮助类   1 using System; 2 using System.Collections.Generic; 3 using System.Configuration; 4 using System.IO; 5 using System.Linq; 6 using System.Net.Mail; 7 using System.Text; 8 using System.Web;

php通过邮箱找回密码

很久没有写过博客了,现在我要重新开始记录,工作中遇到的一些问题,并将其记录下来最为经验的积累. --------------------回归正题----------------------- 很多网站,只要有用户注册,就必然会遇到用户登陆时忘记密码的情况,常用的找回密码的方式有两种,一种是通过发送短信验证码,另一种是通过发送连接到邮箱,打开连接通过验证后跳转到重置密码界面. 短信认证的方法,之前写过一篇jsp版本的.通过短信找回密码. 思路十分简单,通过随机生成6位字符验证码,然后将其写入数据库

给自己项目添加注册、登陆、改密码、邮箱找回密码等功能,出现大坑!

1.使用django验证框架的登陆.注销功能,必须settings设置如下: LOGIN_REDIRECT_URL = 'shop:product_list' LOGOUT_REDIRECT_URL = 'shop:product_list' LOGIN_URL = 'shop:login' LOGOUT_URL = 'shop:logout' LOGIN_REDIRECT_URL = 'shop:product_list'-----------登录成功后,转到哪个页面的url,在此设置. LO