C# “用户注册“板块开发 发送邮箱验证码

Posted 小马的黄金棺材板

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# “用户注册“板块开发 发送邮箱验证码相关的知识,希望对你有一定的参考价值。

先看效果图:

使用手机或邮箱验证码注册账号大家在也熟悉不过了,下面通过C#语言进行注册的一个小模块开发,代码也是只有几行

网易邮箱授权码:
首先需要一个网易云的邮箱账号,QQ的自行测试,注册好后,
点击“设置”

开启IMAP/SMTP服务 然后保存一下授权码 还有下面的服务器地址

邮箱注册链接(免费)

发送邮箱验证码:

点击“发送验证码”时发送:

MailMessage m = new MailMessage();
            //实例化对象
m.From = new MailAddress("dpc6699@126.com");
 //发送地址
m.To.Add(textBox6.Text); 
//你需要发送给哪个邮箱
 m.Subject = "DY圈_注册验证码";
//邮件标题
  m.Body = "您正在注册DY圈,您的验证码为:" + i + ",请勿转告他人,感谢您的使用  \\r\\n By:小马哥的棺材板";
 //邮件内容
SmtpClient s = new SmtpClient();
//创建发送对象
s.Credentials = new NetworkCredential("dpc6699@126.com", "IWTQJRSUQQHOIXXZ");
//第一个参数是你注册的账号 第2个是授权码
s.Host = "smtp.126.com";  
 //服务器地址
  s.Send(m);  
  //发送

注释都非常清楚

测试是否可以用:

已发送成功的邮件:

速度还是非常快的基本几秒钟就可以收到了

其他功能:

窗口加载时连接数据库:

 Random  a = new Random();
          
 label1.Text = a.Next(100000, 900000000).ToString();
           
  label6.Text = b.Next(100000, 900000).ToString();
 sql= new SqlConnectionStringBuilder();
 sql.UserID = "dpc520";
 sql.Password = "00";
 sql.DataSource = "0-00";
 sql.InitialCatalog = "00";
 sql2 = new SqlConnection(sql.ToString());
  if (sql2.State == ConnectionState.Closed)
 {
    sql2.Open();         
 }

点击发送按钮时开始倒计时并发送邮件:

int i=0;
        int m = 60;
        bool o =true;
        private void label11_Click(object sender, EventArgs e)
        {
            if (textBox3.Text != label6.Text)
            {
                MessageBox.Show("验证码错误或未填写");
             
                return;
            }
            if (sql2.State == ConnectionState.Closed)
            {
                sql2.Open();
            }
            SqlCommand c = new SqlCommand("select *from user1 where 绑定邮箱 ='"+textBox6.Text+"'",sql2);
            using (SqlDataReader d = c.ExecuteReader())
            {
                while (d.Read())
                {
                    if (d["绑定邮箱"].ToString().Length >= 1)
                   {
                       MessageBox.Show("该邮箱已注册");
                        label6.Text = b.Next(100000, 900000).ToString();
                        return;
                    }
                }
                }
                Random r = new Random();
                i = r.Next(100000, 900000);
                MailMessage m = new MailMessage();
            //实例化对象
                m.From = new MailAddress("dpc6699@126.com");
            //发送地址
                m.To.Add(textBox6.Text); 
            //你需要发送给哪个邮箱
                m.Subject = "DY圈_注册验证码";
            //邮件标题
                m.Body = "您正在注册DY圈,您的验证码为:" + i + ",请勿转告他人,感谢您的使用  \\r\\n By:小马哥的棺材板";
            //邮件内容
                SmtpClient s = new SmtpClient();
            //创建发送对象
                s.Credentials = new NetworkCredential("dpc6699@126.com", "IWTQJRSUQQHOIXXZ");
                //第一个参数是你注册的账号 第2个是授权码

                s.Host = "smtp.126.com";  
            //服务器地址
                s.Send(m);  
            //发送

                label11.Text = "验 证 码 已 发 送";
                label11.ForeColor = Color.Red;
                timer1.Enabled = true;       
                label13.Visible = true;
                o = false;                  
        }


 private void timer1_Tick(object sender, EventArgs e)
        {
            if (m == 0)
            {         
                label11.Text = "重 新 获 取";
                label11.ForeColor = Color.White;
                m = 60;
                //label11.Enabled = true;             
                label13.Visible = false;           
                timer1.Enabled = false;
                o = true;
                label6.Text = b.Next(100000, 900000).ToString();

            }               
            label13.Text = m.ToString();
            m -= 1;
        }

点击头像时打开路径对话框选择头像:

byte bt=0;
        byte[] arr;
        MemoryStream ms;
        private void img_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog dialog = new OpenFileDialog();
               
                dialog.Multiselect = false;
              
                dialog.Title = "请选择头像";
                
                dialog.Filter = "图片(*.jpg;*.png)|*.jpg;*.png";
                if (dialog.ShowDialog() == DialogResult.OK)
                {                 
                    Bitmap bmp = new Bitmap(dialog.FileName);
                    // img.SizeMode = PictureBoxSizeMode.Zoom;
                    ms = new MemoryStream();
                    bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                    if (ms.Length >= 1024 * 1024 * 6)
                    {
                        MessageBox.Show("图片大小不能超过5M");
                        return;
                    }
                    img.Image = bmp;
                    arr = new byte[ms.Length];
                    ms.Position = 0;
                    ms.Read(arr, 0, (int)ms.Length);
                    ms.Close();
                    ms.Dispose();
                    bt = 1;
                                    
                }
            }
            catch
            {
                MessageBox.Show("文件不存在,或非图像格式");
            }


            }

点击注册时过滤没用的字符并提交数据:

  Regex a = new Regex(@"[\\S]");
            MatchCollection bb = a.Matches(textBox1.Text);
            string str = "";
            foreach (Match c in bb)
            {

                str += c.ToString();
            }

            if (str == "")
            {

                MessageBox.Show("用户名不符合规范");
                label6.Text = b.Next(100000, 900000).ToString();
                return;

            }


            if (textBox2.TextLength < 6) {

                MessageBox.Show("密码必须大于六位数");
                return;
            }


            if (textBox3.Text != label6.Text)
            {

                MessageBox.Show("验证码错误");
                label6.Text = b.Next(100000, 900000).ToString();
                return;
            }


            if (textBox2.Text != textBox5.Text)
            {

                MessageBox.Show("两次密码不一致");
                return;
            
            }
            if (Convert.ToInt32(textBox7.Text) != i)
            {
                MessageBox.Show("邮箱验证码错误");

                return;

            }


            MatchCollection bbb = a.Matches(textBox2.Text);
            string strr = "";
            foreach (Match cc in bbb)
            {

                strr += cc.ToString();
            }

            if (strr == "")
            {
                MessageBox.Show("密码不符合规范");
                label6.Text = b.Next(100000, 900000).ToString();
                return;
            }

            char xb;

            if (radioButton1.Checked)
            {
                xb = '男';

            }
            else {
                xb = '女';

            }

           
            if (bt ==1)
            {
                pic = Convert.ToBase64String(arr);
            }
          else {
          
              MessageBox.Show("请上传头像");
               return;
           }

            MD5 m = MD5.Create();
            byte[] md = Encoding.UTF8.GetBytes(strr);
            byte[] hf = m.ComputeHash(md);
            string g = string.Empty;
            for (int i=0;i<=hf.Length-1;i++)
            {
                g += hf[i].ToString("x");         
            }


            if (sql2.State == ConnectionState.Closed)
            {
                sql2.Open();
            }
                                  
            SqlCommand 查询账号 = new SqlCommand("select * from user1 where userid = '"+ label1.Text + "'", sql2) ;
            SqlDataReader 查询 = 查询账号.ExecuteReader();
            while (查询.Read()) {

                if ( 查询["userid"].ToString().Length >=1 )
                {

                    MessageBox.Show("账号已存在");
                    return;
                }
               
            }

           查询.Close();

       查询.Dispose();
          
            string sql3 = "INSERT INTO user1 VALUES('正常','"+textBox6.Text+"','" + label1.Text + "','" + textBox1.Text + "','" + g + "','"+0+"','"+xb+"','"+pic+"')";
            SqlCommand sql4 = new SqlCommand(sql3, sql2);

            SqlDataReader sql5 = sql4.ExecuteReader();


           
       
            MessageBox.Show("注册成功:"+label1.Text+" \\r\\n " +"密码:"+strr);
            try
            {
                MessageBox.Show("账号已保存到您的桌面");
               // string path = @"C:\\Users\\Administrator\\Desktop\\DY圈账号:"+ label1.Text + "";
                File.Create(@"C:\\Users\\Administrator\\Desktop\\" + label1.Text + "");

            }
            catch
            {


            }


       

          
            登录界面 f = new 登录界面(label1.Text);
            f.Show();
       //     MessageBox.Show(a.ToString());
            this.Hide();//隐藏现在这个窗口
            this.Close();
            sql2.Close();
            sql5.Close();
            sql2.Dispose();
            sql5.Dispose();

        

纯手打,点个赞呗~

以上是关于C# “用户注册“板块开发 发送邮箱验证码的主要内容,如果未能解决你的问题,请参考以下文章

java案例----用户注册--发送邮件并激活/发送邮件验证码

ThinkPHP 3.2 用户注册邮箱验证激活帐号

用户注册邮箱验证逻辑

用户注册及登录功能

django captcha和邮箱验证机制

一次SRC实战 逻辑漏洞