1.发送邮件

 public ActionResult SendEmail()
{
var member = dbSession.MemberRepository.LoadEntities(p => p.UserName == User.Identity.Name).SingleOrDefault();
var tokenCode = Send(member.ID, member.Email, member.UserName);
member.TokenCode = System.Guid.Parse(tokenCode);
dbSession.MemberRepository.Update(member);
dbSession.SaveChanges();
return View(member);
}
private string Send(int id=,string targetEmail="****@163.com",string memberName="aspen")
{
string validataCode = System.Guid.NewGuid().ToString();
try {
System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress("****@163.com", "服务贸易网"); //填写电子邮件地址,和显示名称
System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(targetEmail, memberName); //填写邮件的收件人地址和名称
//设置好发送地址,和接收地址,接收地址可以是多个
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:59637/Account/CheckEmail?memberID=" + id + "&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("****@163.com", "****");
//发送邮件
client.Send(mail);
}
catch {}
return validataCode;
}

2.开启SMTP服务

要想邮件发送成功必须开通SMTP服务,以163邮箱为例:

1.登录发件人邮箱并开启SMTP服务

3.将第一步中点击激活连接中的验证码与数据库中的验证码进行比对,来判断邮箱是否验证通过

 public ActionResult CheckEmail(string validataCode,int memberID=)
{
var member = dbSession.MemberRepository.LoadEntities(p=>p.ID==memberID).SingleOrDefault();
if (member.TokenCode.ToString()==validataCode)
{
TempData["CheckResult"] = "邮箱验证成功";
member.IsPassAudit = true; }
else
{
TempData["CheckResult"] = "邮箱未通过验证";
member.IsPassAudit = false;
}
dbSession.MemberRepository.Update(member);
dbSession.SaveChanges();
return Redirect("/Account/PersonalInfo");
}

asp.net mvc邮箱激活的更多相关文章

  1. ASP.NET MVC 控制器激活(一)

    ASP.NET MVC 控制器激活(一) 前言 在路由的篇章中讲解了路由的作用,讲着讲着就到了控制器部分了,从本篇开始来讲解MVC中的控制器,控制器是怎么来的?MVC框架对它做了什么?以及前面有的篇幅 ...

  2. ASP.NET MVC 控制器激活(二)

    ASP.NET MVC 控制器激活(二) 前言 在之前的篇幅中,用文字和图像来表示了控制器的激活过程,描述的角度都是从框架默认实现的角度去进行描述的,这样也使得大家都可以清楚的知道激活的过程以及其中涉 ...

  3. ASP.NET MVC 控制器激活(三)

    ASP.NET MVC 控制器激活(三) 前言 在上个篇幅中说到从控制器工厂的GetControllerInstance()方法来执行控制器的注入,本篇要讲是在GetControllerInstanc ...

  4. 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射

    使用Code First建模自引用关系笔记   原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...

  5. ASP.NET MVC Controller激活系统详解1

    一.引言 好久没有写博客了,前一段时间学习了Controller激活的一篇很好的博文(链接),在此做个学习总结. 二.Controller 2.1 IController Controller类型直接 ...

  6. asp.net mvc控制器激活全分析

    控制器的激活默认情况下使用反射来实现的,这其中采用了DI,单例等设计模式.对于控制器的主要涉及到如下的类:ControllerBuilder.DefaultControllerFactory.Defa ...

  7. ASP.NET MVC Controller激活系统详解2

    一.引言 此篇博文紧接上篇博文进行阐述,本篇博文阐述的主题是Controller激活和url路由 二.总述 ASP.NET路由系统是HTTP请求抵达服务端的第一道屏障,它根据注册的路由规则对拦截的请求 ...

  8. Asp.Net 注册 邮箱激活

    数据库 表的设计 State为用户状态  0为禁用  1为可用  默认为0,下面有个UserGUID,这个字段将来用于激活账户 首先你要写一个表单,验证码神马的,这个我就不写了..直接写处理的 代码在 ...

  9. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

随机推荐

  1. 强制设置双缓冲DoubleBuffered 解决tableLayoutPanel 闪烁

    tableLayoutPanel.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.In ...

  2. IDEA设置窗口标签换行显示

    windows -> editor tabs -> tabs placement 关掉 show tabs in sigle row即可

  3. python面向对象之练习题2

    练习题 需求: 士兵 可以 花钱买一个AK47 士兵 可以 用开开火 士兵 可以 买弹夹 士兵 可以 上子弹 士兵 可以 给 枪 添加子弹 枪 需要弹夹和有子弹的情况下,借助士兵扣动扳机 才能开火 枪 ...

  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:设置元素为 display:block 并居中显示

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. Windows数据类型探幽——千回百转你是谁?----转载

    Windows数据类型探幽——千回百转你是谁?原创 danis 发布于2007-01-29 20:40:00 阅读数 749 收藏展开 Windows Data TypesWindows数据类型 由微 ...

  6. mybatis 入门参考

    参考:https://www.cnblogs.com/xdp-gacl/p/4261895.html

  7. 四、spring集成ibatis进行项目中dao层基类封装

    Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库 ...

  8. Linux centos7 sed工具介绍

    一.sed上 grep工具功能只能实现查找,不能把查找的内容替换. sed本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行查找.删除.替换字符或字符串.调换字符串位置.直接修改文件内容等 ...

  9. Linux centosVMware vim 编辑模式、vim命令模式、vim实践

    一.编辑模式.命令模式 在一般模式下输入:或/可进入命令模式.在该模式下可进行走索某个字符或字符串,也可保存.替换.退出.显示行号等. /word:在光标之后查找一个字符串word,按n向后继续搜索 ...

  10. 201707《Ruby元编程》

    元编程不过是编程--经典必读 作用域(绑定) 打破作用域门的方式 对象模型图 七条规则 法术手册 作用域(绑定) 改变作用域的关键字, 分别是module,class和def.我们称为作用域的门(sc ...