• 基本流程图

  • 注册页面就不再写出,现在将发送邮件的代码粘贴出来
public ActionResult SendEmial()
{
int customerID= ;
string validataCode = System.Guid.NewGuid().ToString();
try {
System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(xxxxxxxx@163.com, "wode"); //填写电子邮件地址,和显示名称
System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(xxxxx@qq.com, "nide"); //填写邮件的收件人地址和名称
//设置好发送地址,和接收地址,接收地址可以是多个
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.From = from;
mail.To.Add(to);
mail.Subject = "主题内容"; System.Text.StringBuilder strBody = new System.Text.StringBuilder();
strBody.Append("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
strBody.Append("<a href='http://localhost:3210/Order/ActivePage?customerID=" + customerID+ "&validataCode =" + validataCode + "'>点击这里</a></br>"); mail.Body = strBody.ToString();
mail.IsBodyHtml = true;//设置显示htmls
//设置好发送邮件服务地址
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
client.Host = "smtp.163.com";
//填写服务器地址相关的用户名和密码信息
client.Credentials = new System.Net.NetworkCredential("xxxxxxxx@163.com", "xxxxxx");
//发送邮件
client.Send(mail);
}
catch {} return new EmptyResult();
}

说明:

  1. 填写服务器地址相关的用户名和密码信息  client.Credentials = new System.Net.NetworkCredential("xxxxxxxx@163.com", "xxxxxx");
    这个需要填写发件方的邮箱名和密码
  2. 此处发送的邮件内容不会显示出来链接的地址信息,只会以超链接的方式存在,效果如图所示:

3.  验证码是否有效分为两种情况:1.验证是否在规定时间内,激活链接;2.验证码和数据库中保存的是否相同

  • 实现思路:
  1. 页面需要三个页面:1.注册页面;2.激活页面;3.失败页面。
  2. 数据库表中添加一个激活的状态字段-1或1 (-1为未激活,1未激活),在添加一个验证码字段validateCode,最后在添加一个注册时间字段registeredDate
  3. 程序中,注册页面添加注册信息,随机生成注册验证码(GUID)添加到数据库中,把用户id和验证码作为参数发送到邮箱中
  4. 因为用的是asp.net mvc 所以不需要自己写代码获取url中的参数,action 中的参数只要和url 中的对应就行了,action会帮我们自动的获取url 中的参数信息
  5. 通过action 中的参数信息查询数据库,判断是否可以激活注册信息

最新文章

  1. 如何安装并简单的使用OwinHost——Katana
  2. ubuntu/var/log/下各个日志文件
  3. box2d最大速度限制
  4. batch
  5. boost库(条件变量)
  6. 我的css释疑-float line-height inline-block vertical-align
  7. C#string常用函数总结
  8. [物理学与PDEs]书中出现的向量公式汇总
  9. Ubuntu下su:authentication failure的解决办法
  10. JTextPane 的 undo 、 redo
  11. 2014年百度之星程序设计大赛 - 资格赛 第二题 Disk Schedule
  12. 黑科技:纯CSS定制文本省略
  13. How To: Run Tapestry5 On JBoss 6/7
  14. Android屏幕设置只允许上下旋转
  15. C++(1):error: invalid conversion from ‘void (*)()’ to ‘void (*)(int)
  16. 使用querybuilder做忽略大小写查询的例子
  17. yum 命令
  18. iOS链接库的冲突
  19. leetcode 300最长上升子序列
  20. Graph database_neo4j 底层存储结构分析(1)

热门文章

  1. hive 函数学习
  2. 看懂此文,不再困惑于 JS 中的事件设计
  3. python基础:名称空间与作用域
  4. PHP 源码加密扩展(php-beast)PHP7 版本发布
  5. Scrapy入门程序点评
  6. python--执行文件的绝对路径
  7. J2SE知识点摘记(三)
  8. Delphi使用Windows API函数AnimateWindow实现窗体特效
  9. 仍需&quot;敬请期待&quot;的微信沃卡
  10. denoising autoencoder