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