现在网上各大网站为了安全性认证都采用注册邮箱激活,达到了安全性的高要求。接下来我们就一起来实现
实现分为步骤:
一、根据注册邮箱发送激活邮件到注册邮箱
//接收邮箱地址
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();
}
如上信息对于两次解码问题非常重要,第一次是对浏览器翻译进行解码,第二次是对服务器编码进行解码,最后解密。浏览器会对加密信息或服务器编码信息中的某些特殊字符进行翻译(例如%,+...)所以,两次解码是必要的。
我也上传了运行示例大家下载看看吧。