注册发送激活邮件

来源:互联网 发布:云天明和艾aa 知乎 编辑:程序博客网 时间:2024/04/29 17:55

  当用户在一个新的网站上注册用户时,注册成功后就会发送一个激活链接,点击激活链接验证通过后,用户为激活状态,反之未激活。

  新建一个用户表【为了演示,用户表字段不是很多】

   Id int -主键ID

  UserName nvarchar--用户名

  Password nvarchar --密码

  Email nvarchar--注册邮箱

 VCode[uniqueidentifier] ---激活码,

 Status nvarchar -- 激活状态

 ******************************************************

发送邮箱

public void SendValidataEmail(int userId)

{

   UserModel userinfo=GetModel(userId);

  userinfo.VCode=Guid.NewGuid();//生成激活码

  new UserManager().update(userinfo);//保存更新--将激活码更新到当前注册的用户表

 

  MailMessage mailMsg=new MailMessage();

  mailMsg.From=new MailAddress("zhangsan@163.com","显示名称");//发送者

  mailMsg.To.Add(new MailAddress(userinfo.Email,userinfo.UserName));//接收者

  mailMsg.Subject="激活您在**新注册的用户"+user.UserName;//发送邮件的标题

  string  validateUrl="http://www.***.com/ValidateUser.aspx?username=" + HttpUtility.UrlEncode(user.UserName)+"&vcode="+userinfo.VCode;

  mailMsg.Body= "点击下面的链接激活您的帐户(如果看不到超链接,则把网址粘贴到您的浏览器打开):<a href='" + validateUrl + "'>点此激活</a>";

  mailMsg.IsBodyHtml = true;
    SmtpClient client = new SmtpClient("stmp@163.com");
    client.Credentials = new NetworkCredential("zhangsan", "123456");
    //有的smtp服务器的用户名是:zhangsan@163.com,有的是zhangsan
     //用户名、密码必须和From一致

    client.Send(mailMsg);

}

---------------------------------------------------------------------------------------------------------

    public bool ValidateVCode(string username, Guid vcode)
        {
           //没有做:如果用户名不存在、激活码错误、激活码过期(增加一个激活码生成时间字段,只有半个小时之内的才能有效)等几个状态定义为枚举
           UserModel userInfo = GetByUserName(username);
            if (userInfo == null)
            {
                return false;
            }
            //return vcode == userInfo.VCode;
            if (vcode == userInfo.VCode)
            {
                //修改激活状态
                userInfo.Status = "已激活";
                Update(userInfo);
                return true;
            }
            else
            {
                return false;
            }
        }

---------------------------------------------------------------------------------------------------------

注册页面-- RegisterUser.aspx

      UserModel user=new  UserModel();

      //暂且不考虑用户名是否存,密码加密,邮箱是否注册过等验证

    user.UserName=this.txtUserName.Text;     

    user.Password=this.txtPassword.Text;

      user.Email=this.txtEmail.Text;

      user.Status="未激活";

       new UserManager().Add(user);

       new UserManager().SendValidataEmail(user.id);

---------------------------------------------------------------------------------------------------------

验证页面--ValidateUser.aspx

        string username = Request["username"];
            Guid vCode = new Guid(Request["vcode"]);
           
            if (new UserManager().ValidateVCode(username, vCode))
            {
                labelMsg.Text = "激活帐户" + username + "成功";
            }
            else
            {
                labelMsg.Text = "激活帐户" + username + "失败";
            }

原创粉丝点击