通过邮件发送验证码来修改密码
2013-08-04 15:26
369 查看
平时我们上网登录系统是忘记密码,用邮件找回密码,我就在下面自己做了一个用邮件找回密码的小程序:
1、目的:通过用户发送验证码到邮箱,用户登录邮箱后查看验证码(有效期30分钟),输入验证码后可修改密码
2、数据库设计:用户表的关键字段:UserId,UserPass,RandomText,LastSendRandomTime,Email.
3、解决思路:
(1)用户输入邮箱地址(Email,根据用户编号(UserId)判断用户输入的邮箱是否正确,若正确,则将系统生成的验证码(RandomText)、当前发送时间写入用户表的RandomText、LastSendRandomTime字段中,并将验证码发送到用户的邮箱中
(2)当用户输入验证码时,首先判断当前时间与上一次发送验证码的时间间隔,若小于一定的时间,则判断输入的验证码与数据库写入的验证码是否一致,一致则转向修改密码页面
关键代码:
发送邮件:
#region 发送邮件(引用命名空间Mail)
/// <summary>
/// 发送邮件找回密码
/// </summary>
/// <param name="Email">用户邮箱</param>
/// <param name="RanDom">6位数字随机码</param>
public static void SendEmail(string Email, string RanDom, string Name)
{
MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress(Email));
mail.Subject = "作业在线找回密码";
mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.Body = "尊敬的用户:" + Name + ".作业在线系统找回密码给你发的验证码是:" + RanDom + ".该验证码有效时间为30分钟,请注意自己的帐号安全,不要外泄密码!!";
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
SmtpClient smtpclient = new SmtpClient();
smtpclient.UseDefaultCredentials = true;
string EmailClass = Email.Substring(Email.LastIndexOf('@'));
smtpclient.Host = "smtp" + EmailClass;
mail.From = new MailAddress("发送邮件的邮箱地址");
smtpclient.Credentials = new System.Net.NetworkCredential("发送邮件的邮箱地址", "密码");
smtpclient.Send(mail);
}
#endregion
时间间隔:
TimeSpan Ts1 = new TimeSpan(DateTime.Now.Ticks);
TimeSpan Ts2 = new TimeSpan(Dtime.Ticks);
double DiffTime = Ts2.Subtract(Ts1).Minutes;
1、目的:通过用户发送验证码到邮箱,用户登录邮箱后查看验证码(有效期30分钟),输入验证码后可修改密码
2、数据库设计:用户表的关键字段:UserId,UserPass,RandomText,LastSendRandomTime,Email.
3、解决思路:
(1)用户输入邮箱地址(Email,根据用户编号(UserId)判断用户输入的邮箱是否正确,若正确,则将系统生成的验证码(RandomText)、当前发送时间写入用户表的RandomText、LastSendRandomTime字段中,并将验证码发送到用户的邮箱中
(2)当用户输入验证码时,首先判断当前时间与上一次发送验证码的时间间隔,若小于一定的时间,则判断输入的验证码与数据库写入的验证码是否一致,一致则转向修改密码页面
关键代码:
发送邮件:
#region 发送邮件(引用命名空间Mail)
/// <summary>
/// 发送邮件找回密码
/// </summary>
/// <param name="Email">用户邮箱</param>
/// <param name="RanDom">6位数字随机码</param>
public static void SendEmail(string Email, string RanDom, string Name)
{
MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress(Email));
mail.Subject = "作业在线找回密码";
mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.Body = "尊敬的用户:" + Name + ".作业在线系统找回密码给你发的验证码是:" + RanDom + ".该验证码有效时间为30分钟,请注意自己的帐号安全,不要外泄密码!!";
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
SmtpClient smtpclient = new SmtpClient();
smtpclient.UseDefaultCredentials = true;
string EmailClass = Email.Substring(Email.LastIndexOf('@'));
smtpclient.Host = "smtp" + EmailClass;
mail.From = new MailAddress("发送邮件的邮箱地址");
smtpclient.Credentials = new System.Net.NetworkCredential("发送邮件的邮箱地址", "密码");
smtpclient.Send(mail);
}
#endregion
时间间隔:
TimeSpan Ts1 = new TimeSpan(DateTime.Now.Ticks);
TimeSpan Ts2 = new TimeSpan(Dtime.Ticks);
double DiffTime = Ts2.Subtract(Ts1).Minutes;
相关文章推荐
- 通过邮件发送验证码来修改密码
- GitLab Server 发送邮件给新增用户使其通过邮箱中的链接去指定地址修改登录密码
- 通过修改ASP代码来实现Jmail发送邮件方法详解
- 网站登录密码忘记后,通过向手机发送验证码实现找回密码的实现方法
- Rails — devise 发送修改密码邮件
- linux邮件发送与一些不常用的修改密码操作
- 一个通过smtp发送邮件的shell,带用户名密码
- 购物网站20:用户/顾客action----用户列表---用户退出---用户管理---用户登录---用户注册---修改密码---发送邮件
- 网站登录密码忘记后,通过向手机发送验证码实现找回密码的实现方法
- scrapy通过修改配置文件发送状态邮件
- Discuz教程之邮件找回密码邮件发送频率修改
- 重置mysql Root用户密码及修改默认字符集一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。 解决
- gitlab配置通过smtp发送邮件(QQ exmail腾讯企业为例)
- php中通过curl smtp发送邮件
- magento修改发送邮件内容和订单邮件提醒设置
- 如何通过cisco ironport限制每用户的邮件发送数
- 通过SMTP SERVER 无需身份验证发送邮件
- Bugfree修改某些操作不发送邮件
- 用PHP通过SMTP发送邮件
- 一个通过web.Mail发送邮件的类