在使用郵箱驗證之前先要配置下自己郵箱的一些東西。(博主是使用的QQ郵箱作為發送驗證碼的郵箱號)
1.首先要在QQ郵箱官網中找到【設置】——【賬戶】——【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務】,將郵箱保護關閉,並開啟前面2個服務。
2.在我們使用郵箱驗證的時候,會要設置【SMTP服務器】。博主給出一些平台的SMTP;這是SMTP實際上就是代發服務器的地址,由郵箱服務商提供的。SMTP協議屬於TCP/IP協議族,幫助每台計算機在發送或中轉信件時找到下一個目的地。通過SMTP協議所指定的服務器,就可以把E—mail寄到收信人的服務器上,整個過程只需要幾
阿里雲郵箱(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; } }