用户登录邮箱验证和发送邮件缓存应用
2012-08-21 23:43
295 查看
在用户大量注册的时候,我门需要使用邮箱去让用户激活在本站的邮箱信息 如果没有激活 有一些功能就不能用,并且也
不能去验证本邮箱的安全性,所以我们数据库中 用户表中记录着用户的 激活状态 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!
不能去验证本邮箱的安全性,所以我们数据库中 用户表中记录着用户的 激活状态 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!
相关文章推荐
- [经验]同时发送邮件会当成垃圾邮件 ecshop 邮箱设置 用户注册邮箱验证.txt
- GitLab Server 发送邮件给新增用户使其通过邮箱中的链接去指定地址修改登录密码
- asp.net发送邮件,使用MD5加密解密,实现用户注册完成后发送流水号(账号)到对方邮箱,jeasyUI验证,combobox的使用完成 实例下载
- django系统发送邮件到用户邮箱,完成验证
- 演示账号激活的过程:注册——>向指定邮箱发送邮件——>用户登录邮箱,激活账号
- Java实现邮箱登录验证和邮件发送
- Perl CGI 一个简单的用户登录验证应用
- Oracle 存储过程中发送邮件,并支持用户验证、中文标题和内容
- 快速开发android应用2-使用TextInputLayout实现用户登录及验证
- asp.net实现一个用户进行注册的时候同时发送一个邮件到注册人的邮箱,通过发送的邮箱链接来激活该帐号
- 一步一步从原理跟我学邮件收取及发送 2.邮箱的登录和base64
- Java web应用用户是否登录验证过滤处理机制
- asp.net 实现邮箱验证(注册的时候发送邮件激活链接的那种)
- discuz 邮箱验证 不发送邮件
- C#调用ExchangeWebService发送邮件、查询日程、查询用户已使用邮箱空间
- 利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库
- PHP 实现 注册等的邮箱验证 (二)—— 使用 PHPMailer 发送邮件
- [麦先生]在Laravel框架里实现邮箱验证---发送邮件
- linux用户登录检测发送邮件提醒
- 发送邮件(注册用户并激活邮箱)