实现邮箱验证码

  • 参考的博客(大佬们)
  • 邮箱验证的知识点
    • cookie和验证码
    • 前端ajax和一些代码
    • pom.xml的配置
    • Mail工具类
    • 后台具体代码

参考的博客(大佬们)

六位随机验证码链接: 点击这里.
cookie技术链接: 点击这里.
关键邮箱技术链接: 点击这里.

邮箱验证的知识点

首先是前端代码,使用cookie技术存储验证码,超时删除,生成随机验证码
然后就是ajax技术和jQuery的一些使用
引入包pom.xml配置
mail工具类线程(我还没学)
后台代码实现

cookie和验证码

//设计Cookie的值function setCookie(name,value){ var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); }//获取Cookie的值function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg))return unescape(arr[2]); else return null; }//删除Cookie中的值function delCookie(name){ var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); }

前端ajax和一些代码

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script src="https://static.runoob.com/assets/jquery-validation-1.14.0/lib/jquery.js"></script><script src="https://static.runoob.com/assets/jquery-validation-1.14.0/dist/jquery.validate.min.js"></script><script src="https://static.runoob.com/assets/jquery-validation-1.14.0/dist/localization/messages_zh.js"></script><meta charset="utf-8"><script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<title>Insert title here</title>
</head>
<body>
<div class="widget-content" id="demo1">
<span style="white-space:pre"> </span><input type="text" name="text" id="text11">
<input type="button" name="test" value="获取验证码" id="test11">
<input type="button" name="yanz" value="验证"id="yanz11">
</div>
<script type="text/javascript">$("[name=yanz]").click(function(){var a=$("[name=text]").val();var code17=getCookie("code");if(a==code17)alert("成功");elsealert("失败");});function times(){var time = getCookie("time");if(time == null){time = 10;}time--;setCookie("time", time);//设置页面样式//$("[name=test]").html(time+"秒后重新获取");//过1秒递归调用times()函数document.getElementById("test11").value=time+"秒后重新获取";var funcs = setTimeout("times()", 1000);document.getElementById("test11").disabled = true;if ( time <= 0 ){//删除Cookie中的值delCookie("time");delCookie("code");//删除递归调用函数clearTimeout(funcs);document.getElementById("test11").value="重新发送";document.getElementById("test11").disabled = false;}}$("[name=test]").click(function(){var code = "123456";setCookie("code", code);var a=getCookie("code");alert(a); times();});</script>
</body>

Ajax的使用

$("[name=zhuce]").click(function(){var userid =$("[name=userid]").val();var password =$("[name=password]").val();var username =$("[name=username]").val();var mailbox =$("[name=password]").val();var a=$("[name=yanzcode]").val();var code17=getCookie("code");if(a!=code17)alert("验证码错误");var paramas={"userid":userid,"username":username,"password":password,"mailbox":mailbox};$.ajax({type:"post",url:"${ctx}/user/register.do",data:paramas,datatype:"json",success:function(data){if(data==1){alert("注册成功");window.location.href = 'index.jsp';}elsealert("注册失败");},error:function(){alert("失败");}})});

发送验证码的前端js

$("[name=mailsend]").click(function(){var mail =$("[name=mailbox]").val();if(mail==""){alert("请填写邮箱信息");return;}var code = Math.random().toString().slice(-6);setCookie("code",code);times();var paramas1={"mailbox":mail,"code":code};$.ajax({type:"post",url:"${ctx}/user/mailsend.do",data:paramas1,datatype:"json",success:function(data){if(data==1){alert("发送成功");}elsealert("发送失败");},error:function(){alert("失败");}})})//

pom.xml的配置

<!-- c3p0依赖 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><!-- JavaMail相关依赖 --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency>

Mail工具类

package com.sixman.util;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;import javax.annotation.Resource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import com.sixman.domain.UserPo;
import com.sixman.repository.UserRepository;
import com.sun.mail.util.MailSSLSocketFactory;public class MailUtil implements Runnable {private String email;// 收件人邮箱private String code;// 激活码public MailUtil(String email, String code) {this.email = email;this.code = code;}public void run() {// 1.创建连接对象javax.mail.Session// 2.创建邮件对象 javax.mail.Message// 3.发送一封激活邮件String from = "xxx@qq.com";// 发件人电子邮箱String host = "smtp.qq.com"; // 指定发送邮件的主机smtp.qq.com(QQ)|smtp.163.com(网易)Properties properties = System.getProperties();// 获取系统属性properties.setProperty("mail.smtp.host", host);// 设置邮件服务器properties.setProperty("mail.smtp.auth", "true");// 打开认证try {//QQ邮箱需要下面这段代码,163邮箱不需要MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);properties.put("mail.smtp.ssl.enable", "true");properties.put("mail.smtp.ssl.socketFactory", sf);// 1.获取默认session对象Session session = Session.getDefaultInstance(properties, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("xxx@qq.com", "xxx"); // 发件人邮箱账号、授权码}});// 2.创建邮件对象Message message = new MimeMessage(session);// 2.1设置发件人message.setFrom(new InternetAddress(from));// 2.2设置接收人message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));// 2.3设置邮件主题message.setSubject("账号激活");// 2.4设置邮件内容String content = "<html><head></head><body><h1>学术交流平台验证码为:</h1><br/><h3>"+code+"</h3></body></html>";message.setContent(content, "text/html;charset=UTF-8");// 3.发送邮件Transport.send(message);System.out.println("邮件成功发送!");} catch (Exception e) {e.printStackTrace();}}
}

后台具体代码

@Controller
@RequestMapping("/user/")
//类里面的方法
@RequestMapping("mailsend")public void mailsend(HttpServletRequest request,HttpServletResponse response) throws IOException{// 这里可以验证各字段是否为空String email=request.getParameter("mailbox");//生成激活码String code=request.getParameter("code");new Thread(new MailUtil(email, code)).start();PrintWriter a1=response.getWriter();a1.print("1");}

先就这样吧,记录下来了

javaweb实现邮箱验证码相关推荐

  1. JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

    目录 1.前言 2.系统实机演示 3.系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4.系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: ...

  2. 1024电商项目的邮箱验证码与图形验证码功能模块

    项目基于springcloudalibaba,模块功能大致概括就是登录页面的时候先完成图形验证码的校验,输入的数字和字母与图片上的相对应之后,会向对应的邮箱或手机号发送邮箱/短信验证码二次验证.这里展 ...

  3. spring boot 实现发送邮箱验证码

    首先设置一下发件人邮箱,以QQ邮箱为例: 找到帐户,开启POP3/SMTP服务 然后会提醒你怎么去实现,验证完后,会给你一个授权码,记住这个授权码,后端spring boot 会用到 下面回到IDEA ...

  4. Java发送邮箱验证码、session校验功能

    本篇主要描述"发送邮箱验证码.session校验"相关前(htmljs)后(java)台代码,业务逻辑示例,闲话少诉,直接上代码. 1.引入的jar包是mail-1.4.jar 2 ...

  5. Python - Flask 图片验证码和邮箱验证码的后端实现

    1. 图片验证码 1.1 工具类 - utility.py 将所有和图片验证码有关的方法放在类 ImageCode import random import string from io import ...

  6. C# WinForm 使用SMTP协议发送QQ邮箱验证码

    文章目录 前言 功能实现步骤 一.获取QQ邮箱授权码 二.功能界面 三.创建发送邮箱验证码的类 四.在From1中调用类中的函数,实现功能 前言   在程序设计中,发送验证码是常见的一个功能,用户在注 ...

  7. java邮箱验证码_Java实现邮箱验证码

    原标题:Java实现邮箱验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注 ...

  8. mysql查询使用qq邮箱注册_Spring Boot实现qq邮箱验证码注册和登录验证功能

    1.登录注册思路 这是一个使用spring boot做的一个qq邮箱注册和登录的项目. 没写前端页面,使用postman测试.有截图详细. 1.1.思路 注册:通过输入的邮箱发送验证码,检验前端传来的 ...

  9. php 怎么验证邮箱验证码,PHP实现邮箱验证码验证功能

    标签:邮箱验证   登录   格式   tar   程序   body   用户名   实现   include *文章来源:https://blog.egsec.cn/archives/623  ( ...

最新文章

  1. 框架中解决部分页面返回登录
  2. mysql用binlog恢复数据_mysql 利用 binlog 恢复数据
  3. Jackson学习笔记(三)转
  4. 让您的Eclipse具有千变万化的外观
  5. MTFBWU的完整形式是什么?
  6. 小程序设置header cookie
  7. 【C语言】第九章 复杂数据类型与结构体 题解
  8. Hadoop HIVE 关联查询
  9. 指定输出路径_新版Creo输入输出配置不用愁,果断收藏本文就对了
  10. 迁移学习SSD深度网络模型,实现文本行检测
  11. el-form 动态校验规则_动态多线程敏感信息泄露检测工具
  12. dataguard日志传输模式解析_日志系统:从ELK到EFK的演进
  13. android5.0+art模式,Android 5.0有哪些变化
  14. 3. DICOM图像层级分类-DCMTK-数据字典避坑
  15. python检测屏幕亮点_Python+OpenCV检测灯光亮点的实现方法
  16. 【动手学深度学习】李沐——卷积神经网络
  17. elementUI el-upload传额外的参数
  18. 【IM集成攻略】手把手教你环信对接离线推送,再搞不定把你头打掉
  19. 如何快速定位并修复Bug
  20. 6. 批量处理分析数据

热门文章

  1. 从NAACL2021到ACL2022:两个信息抽取SOTA的比较分析(PURE vs PL-Marker)
  2. 基于单片机万用表量程手动自动电阻电流电压设计-全套资料
  3. 关于全连接层 fully connect
  4. Oracle一备份内存就占满卡死,rman备份占用内存问题
  5. 十一,常量(constant)详细讲解
  6. 电脑版微信头像无法显示并且不能显示表情
  7. 实验一 简单计算器的实现(QT实现)
  8. SQL入门-连结(JOIN)
  9. 【产品经理】日活跃用户「MAU」 和月活跃用户「DAU」
  10. 稍微好看点的登录页面html