在C# MVC项目中如何使用【邮箱】发送验证码?(可用于登录/注册等验证)

时间:2024-02-25 19:02:33

在使用邮箱验证之前先要配置下自己邮箱的一些东西。(博主是使用的QQ邮箱作为发送验证码的邮箱号)

1.首先要在QQ邮箱官网中找到【设置】——【账户】——【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】,将邮箱保护关闭,并开启前面2个服务。

 

 

2.在我们使用邮箱验证的时候,会要设置【SMTP服务器】。博主给出一些平台的SMTP;这是SMTP实际上就是代发服务器的地址,由邮箱服务商提供的。SMTP协议属于TCP/IP协议族,帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E—mail寄到收信人的服务器上,整个过程只需要几7a64e59b9ee7ad9431333433626461分钟。SMTP服务器遵循SMTP协议的发送邮件服务器,用来发送或中转用户发出的电子邮件。

     阿里云邮箱(mail.aliyun.com):

  POP3服务器地址:pop3.aliyun.com(SSL加密端口:995;非加密端口:110)

  SMTP服务器地址:smtp.aliyun.com(SSL加密端口:465;非加密端口:25)

  IMAP服务器地址:imap.aliyun.com(SSL加密端口:993;非加密端口:143)

  

  谷歌邮箱(google.com):

  POP3服务器地址:pop.gmail.com(SSL启用端口:995)

  SMTP服务器地址:smtp.gmail.com(SSL启用端口:587)

  

  新浪邮箱(sina.com):

  POP3服务器地址:pop3.sina.com.cn(端口:110)

  SMTP服务器地址:smtp.sina.com.cn(端口:25)

  

  Tom邮箱(top.com):

  POP3服务器地址:pop.tom.com(端口:110)

  SMTP服务器地址:smtp.tom.com(端口:25)

  

  网易邮箱(163.com):

  POP3服务器地址:pop.163.com(端口:110)

  SMTP服务器地址:smtp.163.com(端口:25)

  

  126邮箱:

  POP3服务器地址:pop.live.com(端口:995)

  SMTP服务器地址:smtp.126.com(端口:25)

  

  雅虎邮箱(yahoo.com):

  POP3服务器地址:pop.mail.yahoo.com

  SMTP服务器地址:smtp.mail.yahoo.com

  

  雅虎中国(yahoo.com.cn):

  POP3服务器地址:pop.mail.yahoo.com.cn(端口:995)

  SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587)

  雅虎邮箱POP3的SSL不启用端口为110,POP3的SSL启用端口995;SMTP的SSL不启用端口为25,SMTP的SSL启用端口为465。

  

  Foxmail邮箱(foxmail.com):

  POP3服务器地址:POP.foxmail.com(端口:110)

  SMTP服务器地址:SMTP.foxmail.com(端口:25)

  

  QQ邮箱(mail.qq.com)

  POP3服务器地址:pop.qq.com(端口:110)

  SMTP服务器地址:smtp.qq.com(端口:25)

  SMTP服务器需要身份验证。

  

  搜狐邮箱(sohu.com):

  POP3服务器地址:pop3.sohu.com(端口:110)

  SMTP服务器地址:smtp.sohu.com(端口:25)

  

  HotMail邮箱(hotmail.com):

  POP3服务器地址:pop.live.com(端口:995)

  SMTP服务器地址:smtp.live.com(端口:587

  

  移动139邮箱:

  POP3服务器地址:POP.139.com(端口:110)

  SMTP服务器地址:SMTP.139.com(端口:25)

  

  中华网邮箱(china.com):

  POP3服务器地址:pop.china.com(端口:110)

  SMTP服务器地址:smtp.china.com(端口:25)

 

//接下来我们正式敲代码~~

1.生成随机数

 /// <summary>
        /// 生成验证码
        /// </summary>
        /// <returns>验证码</returns>
        public static string code()
        {
            string vc = "";
            Random rNum = new Random();//随机生成类
            int num1 = rNum.Next(0, 9);//返回指定范围内的随机数
            int num2 = rNum.Next(0, 9);
            int num3 = rNum.Next(0, 9);
            int num4 = rNum.Next(0, 9);

            int[] nums = new int[4] { num1, num2, num3, num4 };
            for (int i = 0; i < nums.Length; i++)//循环添加四个随机生成数
            {
                vc += nums[i].ToString();
            }
            return vc;
        }

 

2.写一个发送邮箱的方法

/// <summary>
        /// 发送邮件的方法
        /// </summary>
        /// <param name="mailTo">要发送的邮箱</param>
        /// <param name="mailSubject">邮箱主题</param>
        /// <param name="mailContent">邮箱内容</param>
        /// <returns>返回发送邮箱的结果</returns>
        public static bool SendEmail(string mailTo, string mailSubject, string mailContent)
        {
            // 设置发送方的邮件信息,例如使用腾讯的smtp
            string smtpServer = "smtp.qq.com"; //SMTP服务器
            string mailFrom = "1714291837@qq.com"; //登陆用户名
            string userPassword = "xxx";//登陆密码,如果使用的是腾讯的 用的是授权码

            // 邮件服务设置
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
            smtpClient.Host = smtpServer; //指定SMTP服务器

            smtpClient.EnableSsl = true;
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword);//用户名和密码

            // 发送邮件设置       
            MailMessage mailMessage = new MailMessage(mailFrom, mailTo); // 发送人和收件人
            mailMessage.Subject = mailSubject;//主题
            mailMessage.Body = mailContent;//内容
            mailMessage.BodyEncoding = Encoding.UTF8;//正文编码
            mailMessage.IsBodyHtml = true;//设置为HTML格式
            mailMessage.Priority = MailPriority.Low;//优先级
            try
            {
                smtpClient.Send(mailMessage); // 发送邮件
                return true;
            }
            catch (SmtpException ex)
            {
                return false;
            }
        }

 

3.使用邮箱

 //获取邮箱验证码(使用session要注意:在Global.asax里需要配置)
        public bool EmailCode(string Email)
        {
            //1.将验证码存给session
            HttpContext.Current.Session["ValidateYZMode"] = Email_Code.code();
            HttpContext.Current.Session["ValidateEmail"] = Email;
            //2.获取验证码、邮箱
            YzmCode = HttpContext.Current.Session["ValidateYZMode"].ToString();
            EmailYZCode = HttpContext.Current.Session["ValidateEmail"].ToString();
            string strBody = "嗨喽,终于等到您啦!<br/><br/>欢迎注册创客优选,您的验证码为:<span style=\'color:red;font-weight:bold;font-size:18px;\'>" + YzmCode + "</span><br/>(5分钟内有效)<br/><br/>工作人员不会向您索要密码、验证码等信息。如非本人操作,请联系创客优选客服或忽略本条信息。<br/><br/>";
            //3.发送邮箱
            bool result=Email_Code.SendEmail(Email, "创客优选", strBody);
            if (result == true)
            {
                return true;
            }else
            {
                return false;
            }
        }