springboot邮箱验证码功能的实现
需要添加本地jar包,jar包来自:https://www.cnblogs.com/xhj1074376195/p/12490517.html
需要添加本地jar包,jar包来自:https://www.cnblogs.com/xhj1074376195/p/12490517.html
@RestController public class Mailcontroller { @GetMapping(value = "/sentmail") public String sentmail( @NotNull String mail){ String vertifyCode=createVertifyCode(); Properties prop = new Properties(); // 开启debug调试,以便在控制台查看 prop.setProperty("mail.debug", "true"); // 设置邮件服务器主机名 prop.setProperty("mail.host", "smtp.qq.com"); // 发送服务器需要身份验证 prop.setProperty("mail.smtp.auth", "true"); // 发送邮件协议名称 prop.setProperty("mail.transport.protocol", "smtp"); // 开启SSL加密,否则会失败 MailSSLSocketFactory sf = null; try { sf = new MailSSLSocketFactory(); } catch (GeneralSecurityException e) { e.printStackTrace(); } sf.setTrustAllHosts(true); prop.put("mail.smtp.ssl.enable", "true"); prop.put("mail.smtp.ssl.socketFactory", sf); // 创建session Session session = Session.getInstance(prop); try { Transport ts = session.getTransport(); try { // 连接邮件服务器:邮箱类型,帐号,POP3/SMTP协议授权码 .163使用:smtp.163.com ts.connect("smtp.qq.com", "qq号", "授权码"); } catch (MessagingException e) { e.printStackTrace(); } Message message = null; try { // 创建邮件 message = createSimpleMail(session,vertifyCode); } catch (Exception e) { e.printStackTrace(); } try { //修改邮件接收方为传入的参数(邮件地址) message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail)); } catch (MessagingException e) { e.printStackTrace(); } // 发送邮件 try { ts.sendMessage(message, message.getAllRecipients()); } catch (MessagingException e) { e.printStackTrace(); } try { ts.close(); } catch (MessagingException e) { e.printStackTrace(); } } catch (NoSuchProviderException e) { e.printStackTrace(); } //返回验证码给前端 return vertifyCode; } // 获取6位随机验证码 public String createVertifyCode(){ String[] letters = new String[] { "q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m", "A","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M", "0","1","2","3","4","5","6","7","8","9"}; String stringBuilder =""; for (int i = 0; i < 6; i++) { stringBuilder = stringBuilder + letters[(int)Math.floor(Math.random()*letters.length)]; } return stringBuilder; } public static MimeMessage createSimpleMail(Session session, String str) throws Exception { // 创建邮件对象 MimeMessage message = new MimeMessage(session); // 指明邮件的发件人 message.setFrom(new InternetAddress("****@qq.com")); // 指明邮件的收件人,发件人和收件人如果是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress("****@qq.com")); // 邮件的标题 message.setSubject("XX平台验证码"); // 邮件的文本内容 message.setContent("您正在使用密码修改服务,密码重置验证码为(一分钟有效):"+str+",请勿回复此邮箱", "text/html;charset=UTF-8"); // 返回创建好的邮件对象 return message; } }
运行:
邮箱:

前端:


浙公网安备 33010602011771号