本文共 1459 字,大约阅读时间需要 4 分钟。
平时我们上网登录系统是忘记密码,用邮件找回密码,我就在下面自己做了一个用邮件找回密码的小程序:
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;转载地址:http://hewcl.baihongyu.com/