实现ASP.NET发送验证码至邮箱以验证邮箱可用性

最近MSP内正在大开脑洞,制作基佬紫狗牌(⁄ ⁄•⁄ω⁄•⁄ ⁄),还打算搭建一个MSP的征婚网站,在制作时就在思考使用ASP.NET实现发送验证码至邮箱以验证邮箱可用性。

接下来是我的思路:

首先使用RegularExpressionValidator控件验证邮箱格式是否正确

然后使用Random类获取伪随机数

通过调用MailMessage和SmtpClient两个类向用户邮箱发送随机数

用户输入随机数验证邮箱可用性

打开清真的Visual Studio 2017【在此感谢微软爸爸提供的各种密钥!】没有专业/企业版的同学可以使用社区版VS!_:(´ཀ`」 ∠):_

输入邮箱以接收邮件的前台代码:

输入邮箱:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
         <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RegularExpressionValidator" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
        <br />
        <asp:Button ID="Button1" runat="server" Text="发送验证码" OnClick="Button1_Click" />

输入邮箱以接收邮件的后台代码:

string chkCode = string.Empty;
        //验证码的字符集,去掉了一些容易混淆的字符
        char[] character = { '2', '3', '4', '5', '6', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };

        Random rnd = new Random();

        //生成验证码字符串
        for (int i = 0; i < 4; i++)
        {
            chkCode += character[rnd.Next(character.Length)];
        }
        MailMessage mymail = new MailMessage();          //声明一个Mail对象  
        mymail.From = new MailAddress("xxxxx@163.com");    //发件人地址  
        mymail.To.Add(new MailAddress(TextBox1.Text));   //收件人地址  
        mymail.Subject = "XXX网站验证码";                  //邮件主题  
        mymail.Body = chkCode.ToString();                     //发送邮件的内容  
                                                         //创建一个邮件服务器类  
        SmtpClient myclient = new SmtpClient();
        myclient.Host = "smtp.163.com";
        //SMTP服务端口  
        myclient.Port = int.Parse("25");
        //验证登录  
        myclient.Credentials = new NetworkCredential("xxxxx@163.com", "xxxxx");//这里填入发件人的用户名和密码
        myclient.Send(mymail);
        Session["chkCode"] = chkCode;    //将验证码传值到Default2
        Response.Redirect("Default2.aspx");    //跳转至Default2页面

用户输入验证码以检查邮箱可用性前台代码:

输入验证码:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="RegularExpressionValidator" ValidationExpression="^[0-9]{4}$"></asp:RegularExpressionValidator>
        <br />
        <asp:Button ID="Button2" runat="server" Text="检查邮箱" OnClick="Button2_Click" />

用户输入验证码以检查邮箱可用性后台代码:

String chkCode;    //定义chkCode变量
chkCode = Session["chkCode"].ToString();   //接收Default传值
if (TextBox2.Text == chkCode)     //判断验证码是否正确
{
    Response.Write("<script languane='javascript'>alert('验证码正确!')</script>");
}
else
{
    Response.Write("<script languane='javascript'>alert('验证码错误!')</script>");
}

以上就是我解决ASP.NET注册验证邮箱的思路以及代码!