在C# MVC項目中如何使用【郵箱】發送驗證碼?(可用於登錄/注冊等驗證)


在使用郵箱驗證之前先要配置下自己郵箱的一些東西。(博主是使用的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;
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM