用户登录邮箱验证和发送邮件缓存应用
在用户大量注册的时候,我门需要使用邮箱去让用户激活在本站的邮箱信息 如果没有激活 有一些功能就不能用,并且也
不能去验证本邮箱的安全性,所以我们数据库中 用户表中记录着用户的 激活状态 activestate=fasle 和activecode(GUID)激活码
等字段,并且只有当用户激活了之后才能去修改信息, 并且在激活的时候也要去验证用户传递来的activecode 和数据库中
的字段进行比较,以及用户的id ,如果真有id 并且activecode的值和数据库中的字段一致后才去 修改数据库中的
activestate=true字段的值,
当每来一个用户去注册的时候都要发送邮件 但是当管理员的邮箱要改 的时候 如果在配置文件中设置的 那么就要重新
启动iis 导致所有用户都掉线,不可取, 所以我们在数据库中设置了 //系统邮件地址 系统邮件用户名 系统邮件密码 系统邮件SMTP
等一个name 列和他相对应的值 value 列
但是这样每当用户注册都要去读取数据库拿到这些信息才去和用户发邮件,连接数据库很浪费性能 所以我们适应
HttpRuntime.Catch 缓存技术 根据 //系统邮件地址 系统邮件用户名 系统邮件密码 系统邮件SMTP 的名称去找到响应的值
这样 不管管理员更新邮件地址 还是什么 只要我从缓存中拿就行了
并且给新注册的用户发送邮件也只需要在缓存中拿到管理员的邮件信息就可以了
代码:
//根据邮箱配置项的名称找到该值.--放入缓存中。
public string GetModel(string name)
{
if (HttpRuntime.Cache[name] == null) //要进入 system.web这个命名空间 HttpRuntime在这个下边
{
string value = dal.GetModel(name).Value;//根据你的键值从数据库中获取响应的值
HttpRuntime.Cache[name] = value;
return value;
}
else
{
return HttpRuntime.Cache[name].ToString();
//HttpRuntime.Cache.Remove(name);//清空缓存.
}
}
管理员更新邮箱的时候只要在写一个更新的方法 让HttpRuntime.Cache.Remove(name)就可以了
发送邮件代码
MailMessage mailMsg = new MailMessage();//两个类,别混了,要引入System.Net这个Assembly
mailMsg.From = new MailAddress(GetModel("dreamliu"));//源邮件地址
mailMsg.To.Add(new MailAddress("1002431328@qq.com"));//目的邮件地址。可以有多个收件人
mailMsg.Subject = "Hello,大家好!";//发送邮件的标题
mailMsg.Body = "helloword!";//发送邮件的内容
mailMsg.IsBodyHtml = true;//如果发送的邮件中有html语言就要设置这个值
SmtpClient client = new SmtpClient(GetModel("smtp"));//smtp.163.com,smtp.qq.com
client.Credentials = new NetworkCredential(GetModel("UserName"),GetModel("pwd"));
client.Send(mailMsg);
OK!