邮箱发送验证码

匿名 (未验证) 提交于 2019-12-03 00:22:01

首先说一下邮箱发送验证码,邮箱发送验证码是免费的。可以通过网易邮箱进行发送。
首先写了个简单的jsp页面,后端就是用了简单的servlet写的,所以要导入导入jstl-1.2.jar,servlet-api.jar两个包,jsp页面代码如下:

<%--   Created by IntelliJ IDEA.   User: admin   Date: 2018/5/29   Time: 18:43   To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head>     <title>Title</title> </head> <body>     <form id="form1"  method="post" action="validateEmail">         用户名:<input type="text" id="username" name="username">         <button type="submit" id="submit">发送验证码</button></br>         验证码: <input type="text" id="code" name="code">     </form> </body> </html>

就是一个form表单我就不多说了。

就下来下一个生成随机六位验证码的方法,我这个可以生成大写小写字母,以及数字。代码如下:

//@1  生成随机六位验证码     public static String getRes() {         String s="";         for(int i=0;i<6;i++) {             int res=(int)(Math.random()*3);             if(res==0) {                 s=s+(char)getUpper();             } else if(res==1) {                 s=s+(char)getLower();             } else {                 s=s+getNumber();             }         }         return s;     }     public static int getUpper() {//大写字母         return (int)(Math.random()*26+65);     }     public static int getLower() {//小写字母         return (int)(Math.random()*26+97);     }     public static int getNumber() {//得到数字         return (int)(Math.random()*10);     }

接下来就到发送邮箱验证码的核心了,这里需要导入几个邮箱需要用的jar,mail-1.4.jar和activation-1.1.jar,去网上下载一下就可以了。
这部分的代码如下:

    /**      *@2  邮箱初始化      */     public static String account="**********";//你的163邮箱     public static String password="*********";//你的密码      // 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com     // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com     public static String myEmailSMTPHost = "smtp.163.com";      //发送邮件的方法     public static void sendEmail(String to,String code) {//to发送到哪个邮箱,code随机生成的六位验证码         // 1.创建连接对象,链接到邮箱服务器         Properties props = new Properties();         props.setProperty("mail.transport.protocol", "smtp");         props.setProperty("mail.smtp.host", myEmailSMTPHost);         props.setProperty("mail.smtp.auth", "true");          // 2.根据配置创建会话对象, 用于和邮件服务器交互         Session session = Session.getInstance(props, new Authenticator() {             @Override             protected PasswordAuthentication getPasswordAuthentication() {                 return new PasswordAuthentication(account, password);             }         });         try {             // 3.创建邮件对象             Message message = new MimeMessage(session);             // 3.1设置发件人             message.setFrom(new InternetAddress(account));             // 3.2设置收件人             message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));             // 3.3设置邮件的主题             message.setSubject("Love");             // 3.4设置邮件的正文             //message.setContent("<h1>您的验证码是:</h1><h3><a href='http://localhost:10080/Demo_JavaMail/active?code=" + code + "'>http://localhost:10080/Demo_JavaMail/active?code=" + code + "</h3>", "text/html;charset=UTF-8");              message.setContent("<h1>来自远方的呼唤,您的验证码是:" + code, "text/html;charset=UTF-8");              // 4.发送邮件             Transport.send(message);         } catch (MessagingException e) {             e.printStackTrace();         }     }

servlet的调用部分

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;  /**  * Created by admin on 2018/5/29.  */ @WebServlet(name ="validateEmail",urlPatterns = {"/validateEmail"}) public class ValidateEmail extends HttpServlet{     @Override     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         this.doPost(req,resp);     }      @Override     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         System.out.println("发送执行");         String validateCode=SendEmail.getRes();         System.out.println(validateCode);         HttpSession session=req.getSession();         session.setAttribute("validateCode",validateCode);//将验证码存储到Session传到前端         String username=req.getParameter("username");         SendEmail.sendEmail(username,validateCode);         System.out.println("验证码已发送");         req.getRequestDispatcher("validateEmail.jsp").forward(req,resp);     } } 

OK,邮箱发送验证码还是挺简单的,想指导我短信发送验证码的各位请看我的下一篇文章。

文章来源: 邮箱发送验证码
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!