注册信息邮箱激活终极实例

 现在网上各大网站为了安全性认证都采用注册邮箱激活,达到了安全性的高要求。接下来我们就一起来实现

实现分为步骤:

一、根据注册邮箱发送激活邮件到注册邮箱

        //接收邮箱地址
        string to = txtName.Text.Trim();
        //发送邮箱地址
        string from = "123@qq.com";
        //邮件主题
        string subject = "XX网站激活";
        //自定义加密类加密算法
        string jiamicode = AlgorithmHandle.Encrypt("uid=right");
        //构造服务器注册激活页面请求URL
        string requesturl = Request.Url.ToString().Substring(0,
            Request.Url.ToString().LastIndexOf("/") + 1) + "Success.aspx?";
        //Server.UrlEncode(jiamicode)对加密信息URL进行编码(识别+、/等特殊符号)
        string mailbody = txtName.Text + ",你好!!!\n激活点击:" + requesturl +
            Server.UrlEncode(jiamicode);
        //发送邮箱用户名
        string userName = "123@qq.com";
        //发送邮箱密码
        string password = "123";
        //发送smtp服务器
        string smtpHost = "smtp.qq.com";

        //构造发送邮件地址对象
        MailAddress From = new MailAddress(from);
        //构造接收邮件地址对象
        MailAddress To = new MailAddress(to);
        //构造发送邮件信息内容对象
        MailMessage message = new MailMessage(From,To);
        //设置邮件主题
        message.Subject = subject;
        //设置邮件正文为html格式
        message.IsBodyHtml = true;
        //设置邮件内容
        message.Body = body;      
        //构造SMTP客户端对象
        SmtpClient client = new SmtpClient(smtpHost);
        //设置发送邮件身份验证方式
        //注意如果发件人地址是abc @ def.com,则用户名是abc而不是abc @ def.com
        client.Credentials = new NetworkCredential(userName, password);
        //发送邮件
        client.Send(message);

        实现如上信息,注意敏感信息加密。

二、登录注册邮箱进行邮件激活,激活时访问网站激活页面请求处理如下

        //获取请求URL
        string url = Request.Url.ToString();
        if (url.IndexOf("?") >0)
        {
            //获取IE翻译之后加密信息
            string jiemistr = url.Substring(url.IndexOf("?") + 1);
            //针对IE翻译进行解码
            jiemistr=Server.UrlDecode(jiemistr);
            //针对服务器编码解码
            jiemistr=Server.UrlDecode(jiemistr);
            //进行解密
            string pras = AlgorithmHandle.Decrypt(jiemistr.ToString().Trim());
            //校验信息
            if (!pras.Substring(pras.IndexOf("=") + 1).Equals("right"))
            {
                Response.ContentType = "text/html";
                Response.Write("账户激活失败!!!!");
                Response.End();

            }
        }
        else {
            Response.ContentType = "text/html";
            Response.Write("非邮箱激活!!!!");
            Response.End();
        
        }

       如上信息对于两次解码问题非常重要,第一次是对浏览器翻译进行解码,第二次是对服务器编码进行解码,最后解密。浏览器会对加密信息或服务器编码信息中的某些特殊字符进行翻译(例如%,+...)所以,两次解码是必要的。

       我也上传了运行示例大家下载看看吧。

     

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值