.NET用户注册邮箱验证

这是一次偶然的机会,跟公司的业务聊了下他们大概的需求,其中有一点用户需要邮箱验证去注册自己的账户;对于还没有接触过这块的我来说,产生了浓厚的兴趣,于是乎研究了下。想到了两种方法:一种是程序产生比较简单的验证码直接发送到邮箱,用户手动填写验证码进行验证完成注册;

另外一种(还未研究)
要实现邮箱激活其实就是解决服务器上发邮件的问题,用户注册后,把用户状态默认成未激活,然后生成一个链接到一个页面,在那个页面加载时运行一个SQl语句把用户状态改成激活,然后再跳转到什么成功激活的页面就可以了,当然要传递一些有效的参数了;邮件激活的话就给注册时用户填写的邮箱发信就可以了,内容里面写上那个自动生成链接,怎么发邮件呢,建议你使用第三方控件Jmail不错,当然还有别的,如果用Smtp协议发的话20封左右就挂掉了···  

第一种代码和流程图展示如下:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }


    protected void Button1_Click(object sender, EventArgs e)
    {
        MailAddress MessageFrom = new MailAddress("********@qq.com"); //发件人邮箱地址 
        string MessageTo = "*******@mccn.com.cn"; //收件人邮箱地址 
        string MessageSubject = "测试邮件发送"; //邮件主题 
        string StrRandom = GenCode(6);


        System.Text.StringBuilder strBody = new System.Text.StringBuilder();
        //strBody.Append("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
        //strBody.Append("<a href='http://localhost:3210/Order/ActivePage?customerID=" + 11+ "&validataCode =" + 22 + "'>点击这里</a></br>");
        strBody.Append("请填写您的验证码,48小时生效,否则重新注册账号,请尽快激活!</br>");
        strBody.Append("验证码为:"+StrRandom);
        string MessageBody = strBody.ToString();
        
        
        if (Send(MessageFrom, MessageTo, MessageSubject, MessageBody))
        {
            Response.Write("发送邮件成功");
        }
        else
        {
            Response.Write("发送邮件失败");
        }
    }


    /// <summary> 
    /// 发送电子邮件 
    /// </summary> 
    /// <param name="MessageFrom">发件人邮箱地址</param> 
    /// <param name="MessageTo">收件人邮箱地址</param> 
    /// <param name="MessageSubject">邮件主题</param> 
    /// <param name="MessageBody">邮件内容</param> 
    /// <returns></returns> 
    public bool Send(MailAddress MessageFrom, string MessageTo, string MessageSubject, string MessageBody)
    {
        MailMessage message = new MailMessage();
        message.From = MessageFrom;
        message.To.Add(MessageTo); //收件人邮箱地址可以是多个以实现群发 
        message.Subject = MessageSubject;
        message.Body = MessageBody;
        message.IsBodyHtml = true; //是否为html格式 
        message.Priority = MailPriority.High; //发送邮件的优先等级 


        SmtpClient sc = new SmtpClient();
        sc.EnableSsl = true;
        sc.UseDefaultCredentials = false; 
        sc.Host = "smtp.qq.com"; //指定发送邮件的服务器地址或IP 
        sc.Port = 25; //指定发送邮件端口 
        sc.Credentials = new System.Net.NetworkCredential("**********@qq.com", "suahdvaqmdrzbfhc"); //指定登录服务器的用户名和密码(发件人的邮箱登陆密码)


        try
        {
            sc.Send(message); //发送邮件 
        }
        catch(Exception ex)
        {
            return false;
        }
        return true;


    }


                /// <summary>
            /// 产生随机字符串
            /// </summary>
            /// <param name="num">随机出几个字符</param>
            /// <returns>随机出的字符串</returns>
            private string GenCode(int num)
            {
                string str = "0123456789ABCDEFGHiJKLMNOPQRSTUVWXYZ";//图片上随机文字
                char[] chastr = str.ToCharArray();
                string code = "";
                Random rd = new Random();
                int i;
                for (i = 0; i < num; i++)
                {
                    code += str.Substring(rd.Next(0, str.Length), 1);
                }
                return code;
            }
         
}



第二种流程图:



  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值