最近要用到安全邮箱激活的功能,故写篇博客记录下。

  思路:在表中增加一个字段State来记录邮箱是否激活(0激活,1未激活。)

1、发送邮件。
    1-1,给邮箱发送邮件。内容:激活地址+GUID。
    1-2,以GUID作为键Userid为值存入Session中
2、点击邮箱里激活链接 激活。
    2-1,请求激活页面。(需在20分钟内,同一浏览器打开)
    2-2,通过GUID取Session中的Userid  进行激活。
 
上代码:
 

1.发送邮件

  我们可以使用.net自带的类库:System.Net.Mail;

         /// <summary>
/// 发送激活链接.
/// </summary>
public static void SendEmail(string activeCode, string mail)
{
MailMessage mailMsg = new MailMessage();//两个类,别混了,要引入System.Net这个Assembly
mailMsg.From = new MailAddress("xxxx@163.com");//源邮件地址 ,发件人
mailMsg.To.Add(new MailAddress(mail));//目的邮件地址。可以有多个收件人.
mailMsg.Subject = "请激活在商城中的注册链接";//发送邮件的标题
mailMsg.Body = "<a href='http://localhost:2934/Home/Active/?userId=36&activeCode=" + activeCode + "'>请单击激活</a>";//发送邮件的内容
mailMsg.IsBodyHtml = true;
SmtpClient client = new SmtpClient("smtp.163.com");//smtp.163.com,smtp.qq.com,发件人使用的邮箱的SMTP服务器。
client.Credentials = new NetworkCredential("xxxxx@163.com", "xxxxxxxx");//指定发件人的邮箱的账号与密码.
client.Send(mailMsg);//排队发送邮件. }

  发送邮件服务端代码

  public partial class Index : System.Web.UI.Page
{
public string Url { get; set; }
protected void Page_Load(object sender, EventArgs e)
{ string key = Guid.NewGuid().ToString("N");
// 以GUID为key 存储用户id
Session[key] = ;
// Url需要发送至邮件
Url = "http://localhost:25088/active.aspx?key=" + key; }
}

2.激活

   public partial class active : System.Web.UI.Page
{
public string Msg { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
Msg = "激活失败";
// 取请求中的key
string key = Request["key"];
if (Session[key] != null)
{
// 这里还需要操作数据库
Msg = "激活成功,Userid为" + Session[key];
} }
}

.NET下用C#实现邮箱激活功能的更多相关文章

  1. php实现邮箱激活功能

    php实现邮箱激活功能 一.样例 二.文件结构 其中swiftmailer-master是第三方插件,用来发验证邮件 三.核心代码 doAction.php 响应页面 <?php header( ...

  2. asp.net mvc 注册中的邮箱激活功能实现(一)

    基本流程图 注册页面就不再写出,现在将发送邮件的代码粘贴出来 public ActionResult SendEmial() { ; string validataCode = System.Guid ...

  3. asp.net mvc 注册中的邮箱激活功能实现

    基本流程图 注册页面就不再写出,现在将发送邮件的代码粘贴出来   public ActionResult SendEmial() { ; string validataCode = System.Gu ...

  4. asp.net mvc 注册中的邮箱激活功能实现(二)

    邮件发送功能封装 /// <summary>        /// 发送注册邮件        /// </summary>        /// <param name ...

  5. Java实现邮箱激活验证

    最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 RegisterValidateService.java [java] view plaincopyprint?   package co ...

  6. Java案例-用户注册邮箱绑定激活功能实现

    <–start–> 需求描述:当客户打开收到邮箱激活码的邮件,点击激活链接,正确填写激活码后就会完成邮箱激活的步骤. 在后台编程代码编写中,有以下几个要点: ① 接收客户的手机号码和邮箱激 ...

  7. SpringBoot实现网站注册,邮件激活码激活功能

    项目源码:https://gitee.com/smfx1314/springbootemail 上一篇文章已经讲到如何springboot如何实现邮件的发送,趁热打铁,这篇文章实现如下功能. 很多网站 ...

  8. 使用Asp.Net Identity 2.0 认证邮箱激活账号(附DEMO)

    注:本文系作者原创,但可随意转载.若有任何疑问或错误,欢迎与原作者交流,原文地址:http://www.cnblogs.com/lyosaki88/p/aspnet-itentity-ii-email ...

  9. javamail实现邮箱验证功能

    javamail是基于SMTP协议和POP3协议的邮件发送与接收系统,在用户注册与登陆的过程中,常需要用到邮箱验证功能,下面是基于javamail的一个简单实现 用户注册后通过servlet得到邮箱地 ...

随机推荐

  1. Redis的Set操作

    集合的性质: 唯一性,无序性,确定性 注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素 但,因为集合的无序性,无法通过下标或范围来访问部分元素. ...

  2. 常用WinPE

    微PE工具箱:http://www.wepe.com.cn/ 绝对PE工具箱:http://dl.pconline.com.cn/download/64736.html 通用PE工具箱:http:// ...

  3. 浅析CSS负边距

    本文主要讨论两点,1.左右负边距对元素宽度的影响:2.负边距对浮动元素的影响. 在讨论这两点前,首先要理解盒模型.文档流. 盒模型,见下图,简单明了. 文档流,将窗体自上而下分成一行行, 并在每行中按 ...

  4. 浅谈ES5的const以及strict mode

    了解你使用的JavaScript版本是很重要的,因为不同版本的JavaScript对某些语法或者特性的支持情况是不一样的,下面就来举一些例子来说明一下.首先来看一下const关键字,学过比如Java, ...

  5. cocos2dx Android 环境搭建 以及 ndk调试

    最近在学习cocos2dx,真的很强大,使我们更专注于游戏趣味,免去了繁琐的底层框架代码. cocos2dx的最强大之处当然在于跨平台.跨平台首选当然是Android,好记性不如烂笔头,记下本文分享给 ...

  6. core--线程同步

    [同步(tóng bù)synchronous;sync;synchronism;synchronization 指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系.]这是百度百科对&quo ...

  7. js方式进行地理位置的定位api搜集

    新浪 //int.dpool.sina.com.cn/iplookup/iplookup.php?format=js //int.dpool.sina.com.cn/iplookup/iplookup ...

  8. office编程必不可少 [转]

    1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# .NET 使 Word 自动新建文档 2. 学习资源 (1)Word in the Office 基础知识,必读,下面的 ...

  9. HDU 3863 (博弈) No Gambling

    这是我见过的最简单的一道博弈了,其实不要被复杂的棋盘吓到了. 首先肯定会有而且仅有一个人胜,而且因为棋盘是对称的,所以先手相对于后手肯定更有优势,那么肯定是先手赢. 这是不是严格的推理,但是确实比较容 ...

  10. UVa 1611 (排序 模拟) Crane

    假设数字1~i-1已经全部归位,则第i到第n个数为无序区间. 如果i在无序区间的前半段,那么直接将i换到第i个位置上. 否则先将i换到无序区间的前半段,再将i归位.这样每个数最多操作两次即可归位. # ...