一、找回密码实现和邮件发送功能
找回密码分析:
1. 接收用户输入的用户名邮箱,并且校验邮箱是否和用户名邮箱匹配
2. 构建相应的内容,发送至用户邮箱中,
2.1构建什么内容:系统产生一个新的密码,并且将新产生的新密码发送到用户的邮箱中。
3. 如果需要同时发送多条邮件,需要放在队列中。
二、邮箱发送信息功能实现:相关代码如下,需要引入:using System.Net.Mail;
MailMessage mailMsg = new MailMessage();//两个类,别混了,要引入System.Net这个Assembly mailMsg.From = new MailAddress("wang_itcast@126.com", "王**");//源邮件地址 ,发件人的地址 mailMsg.To.Add(new MailAddress("wangchengwei324@126.com", "王**"));//目的邮件地址。可以有多个收件人,收件人的地址 mailMsg.Subject = "Hello,大家好!";//发送邮件的标题 mailMsg.Body = "Tai Xie E le!";//发送邮件的内容 //smtp 是传输协议 SmtpClient client = new SmtpClient("smtp.126.com");//smtp.163.com,smtp.qq.com client.Credentials = new NetworkCredential("wang_itcast", "wangchengwei"); //用户名和密码 client.Send(mailMsg); //发送
三、实际项目中使用其发送邮件改密码
1. 首先构建一个前端页面。
<%@ Page Title="" Language="C#" MasterPageFile="~/Master/MainMaster.Master" AutoEventWireup="true" CodeBehind="FindPwd.aspx.cs" Inherits="BookShop.Web.Member.FindPwd" %> <asp:Content ID="Content1" ContentPlaceHolderID="Header" runat="server"> <script type="text/javascript"> $(function () { $("#btnFindPwd").click(function () { findPwd(); }); }); function findPwd() { var userName = $("#txtName").val(); var userMail = $("#txtMail").val(); if (userName != "" && userMail != "") { $.post("/ashx/FindPwd.ashx", { "name": userName, "mail": userMail }, function (data) { }); } else { alert("用户名邮箱不能为空"); } } </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <table> <tr><td>用户名</td><td><input type="text" id="txtName" /></td></tr> <tr><td>邮箱</td><td><input type="text" id="txtMail" /></td></tr> <tr><td colspan="2"><input type="button" value="找回密码" id="btnFindPwd" /></td></tr> </table> </asp:Content>
2. 后端代码是:生成一个8位数的密码,然后更新在数据库中,发送给用户。
3. 但是该方法更改密码有好几处安全隐患,必须,如果被别人知道你的用户名和密码,别人就会频繁的给你发送邮件,并且系统自动生成的密码不太好记忆,用户肯定会想着自己去更改,这样就会很麻烦,所有建议不使用上方的改密码,而去使用下方的改密码。
4. 修改后的方法就是,首先当用户输入用户名和邮箱都正确之后,会在userinfo用户表中添加一个生成的Guid值,并且通过邮箱的形式,将修改密码的页面加用户的id的值和Guid的值发送给用户,让用户通过点击该连接进行修改密码的操作。
思路就是这样。