如何实现邮箱发送验证以及前端校验
大家好,今天来写一如何实现前端检验,定时60s后重新发送邮箱实现邮箱发送功能
需求分析:
1.当我们发送邮箱时,必须填入指定格式的邮箱地址,不然无法实现邮箱发送
2.当我们传入为null或者是“”也无法发送邮箱服务,并且会导致后台报错(原因是controller调用方法时没有参数的传递导致的)
3.当地址写入正确,发送邮箱验证后,返回邮箱发送成功SUCCESS
4.如果发送无法接受邮箱,60s后重新发送邮箱
根据上述想法我们来码代码
---------------------------------------------------------------------------------------------------------------------------------
第一步:实现邮箱发送的工具类,并且实现参数的封装(作为工具类使用我们需要知道哪些是固定的,写成常量,哪些是需要传入的作为引用。这就是工具类封装的一个概念,工具类是被大家都能使用和调用的公共类,也避免了重复代码的复写率)
---------------------------------------------------------------------------------------------------------------------------------
package com.lx.utils;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMailUtils {
//此处将不可变的或者是指定的无法改变的变量修饰为常量,此工具类可以直接拿过来使用,但是必须修改用户名和
密码,密码为授权码,需要第三方验证,要注意命名规范!!!!
private static final String PORT = "25";
private static final String AUTH = "true";
private static final String HOST = "smtp.163.com";
private static final String USER_NAME = "a2366@163.com";
private static final String PASSWORD = "a239";
public static void sendMail(String address) throws MessagingException {
// 创建properties实现端口号 第三方验证 smtp协议
Properties properties = new Properties();
// 设置属性
properties.setProperty("mail.smtp.port", PORT);
properties.setProperty("mail.smtp.host", HOST);
properties.setProperty("mail.smtp.auth", AUTH);
// 获取邮箱session
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USER_NAME, PASSWORD);
}
});
// 获取message对象
Message message = new MimeMessage(session);
// 设置标题
message.setSubject("邮箱验证服务");
// 设置发件人
message.setFrom(new InternetAddress(USER_NAME));
// 设置收件人
message.setRecipient(RecipientType.TO, new InternetAddress(address));
// 设置内容
message.setContent("就是一个联系邮箱而已", "text/html;charset=utf-8");
// 发送邮箱
Transport.send(message);
}
}
---------------------------------------------------------------------------------------------------------------------------------
第二步:实现邮箱发送的工具类,在Controller中调用工具类,并且实现参数的传递,鄙人用的框架Spring SpringMvc Myabatis
---------------------------------------------------------------------------------------------------------------------------------
//responsebody用来响应jason格式数据传递String类型的SUCCESS,表明我们已经调用成功邮箱工具类的返回值,
并且需要jackson包的支持,三个大家可以去找一下,缺一不可
@ResponseBody
@RequestMapping("/sendMailutils")
public String sendMailUtils(@RequestParam("text") String address) throws MessagingException{
System.out.println(address);
SendMailUtils.sendMail(address);
return "SUCCESS";
}
---------------------------------------------------------------------------------------------------------------------------------
第三步:编写表单
---------------------------------------------------------------------------------------------------------------------------------
//通过form表来传递收件人,并且通过ajax请求来实现参数的传递,从这里开始需要做较多的验证,希望大家耐心看完,互相收获,互相学习
<form id="curst" action="" method="get">
<input type="text" name="text"><input type="button" value="点击发送验证" οnclick="clickDemo()">
<div id="changeDemo"></div>
</form>
</div>
---------------------------------------------------------------------------------------------------------------------------------
第三步:编写jquery并实现60s后重新发送
---------------------------------------------------------------------------------------------------------------------------------
<script type="text/javascript">
//设置60s时间
var xhr=60;
function clickDemo(){
//text获取表单文本框的value值
var text=$("#curst input:eq(0)").val();
//创建正则表达式
var rexGep=/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ ;
//先判断表达数据是否为null和“”如果为null我们就结束程序的调用,不在执行ajax并且告诉用户需要填写邮箱数据
if(text==null||text==""){
$("#changeDemo").text("请输入邮箱地址");
return;
}
//判断邮箱格式是否正确,通过正则表达式来判断,如果正确那我们继续执行,如果不正确那我们也直接停止调用
if(!rexGep.test($("#curst input:eq(0)").val())){
$("#changeDemo").text("邮箱地址格式不正确");
return ;
}
//如果上述判断皆可行,那么我们调用ajax 这里有一个$("#changeDemo").empty();,他是在我们邮箱为nuull的时 候写入在div标签的文本内容,当我们实现了发送之后,需要清空之前提示格式不正确的消息提示的文本信息
$("#changeDemo").empty();
$.ajax({
url:"sendMailutils",
type:"GET",
dataType:"text",
data:"text="+text,
success:function(data){
//data数据为我们返回jason数据SUCCESS
}
});
//为了实现我们发送邮箱失败,会在60s后继续重新发送邮箱,需要用到周期性定时器的使用,设置按钮操作状态是不可选 中的状态,防止在60s内重新触发事件,导致逻辑错误
setDemo();
}
function setDemo(){
xhr--;
$("#curst input:eq(1)").val(xhr+"秒后重新获取");
$("#curst input:eq(1)").attr("disabled","disabled");
if(xhr==0){
$("#curst input:eq(1)").val("点击发送验证");
$("#curst input:eq(1)").removeAttr("disabled","disabled");
xhr=60;
}else{
setTimeout("setDemo()", 1000);
}
}
至此邮箱发送验证较为完整的版本前端校验,后台发送就出现了,谢谢大家。能看到这里,互相学习和分享
如何实现邮箱发送验证以及前端校验相关推荐
- 使用SpringBoot实现QQ邮箱发送验证码校验、注册的步骤详解(配图)
迷途漫漫,终有一归.--米兰昆德拉 引入的依赖 <!--email--><dependency><groupId>org.springframework.boot& ...
- 引入QQ邮箱发送验证码进行安全校验
其他方案=>引入短信服务发送手机验证码进行安全校验 操作相对复杂且收费,详细教程可供参考选择 最近想给自己的项目在注册时加点安全校验,本想着使用短信验证码,奈何囊中羞涩只能退而求次改用QQ邮箱验 ...
- 网易邮箱发送验证短信的工具类
最近代码刚好用到邮箱验证,所以自己就总结了一下基于网易163邮箱的使用,仅供参考一下: import javax.mail.Message; import javax.mail.Session; im ...
- SpringBoot中快速实现邮箱发送
前言 在许多企业级项目中,需要用到邮件发送的功能,如: 注册用户时需要邮箱发送验证 用户生日时发送邮件通知祝贺 发送邮件给用户等 创建工程导入依赖 <!-- 邮箱发送依赖 --> < ...
- react-hooks + node 使用qq邮箱发送验证码,验证修改密码
在平常,我们写登录注册react项目时,我们可能会考虑使用QQ邮箱发送验证码登录注册,或者使用QQ邮箱验证来修改密码,下面,我们就来使用QQ邮箱来简单发送个邮件. 1.当我们想在react项目中使用Q ...
- Java基础——正则表达式_校验QQ号码、手机号是否满足规则、邮箱格式验证
有以下案例: 1 需求:校验qq号码.要求必须是5-15位数:0不能开头:非正则表达式实现:正则表达式实现 package com.xawl.demo;import java.util.Scanner ...
- 如何通过邮箱发送链接进行邮箱验证
在用户注册账户后,为防止恶意注册,我们通常会提示用户绑定邮箱,并进行邮箱激活确定邮箱是本人在用的.以下页面都是通过thyemleaf渲染. 验证页面 我现在是已验证激活状态,如未验证会显示邮箱未验证, ...
- java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...
短信验证码 短信验证码都是调用一些接口来进行短信的发送,短信验证码在登录.注册等操作中使用的最广泛,本文这一节演示如何使用Java制作一个简单的短信验证码登录. 我这里演示使用的是聚合数据的短信接口( ...
- java发送qq邮箱验证_JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)
JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...
最新文章
- 支持向量机算法原理简介
- JVM运行时数据区---堆(堆内存)
- Linux下使用Eclipse开发C/C++程序
- Linux的僵尸进程及其解决方法(转)
- java获取当前系统时间毫秒_java 获取当前系统时间简写 | 学步园
- 经典C语言程序100例之五六
- ios 返回不会自动刷新页面问题
- php 自旋锁,Linux内核自旋锁使用笔记
- 带有Spring和Maven教程的JAX–WS
- web系统管理系统_使用无头管理系统创建灵活的Web内容
- java初始化配置_java – 初始化没有XML配置的数据库,但使用@Configuration
- Windows10下VB6.0开发——写入数据到文件操作
- 使用NEWSEQUENTIALID解决GUID聚集索引问题
- android 人脸特征提取方法,qs_face_points_android
- 射频电路设计的常见问题及经验总结
- 光纤模块与光纤收发器使用方法
- 云时代主机托管的现状和趋势
- X11 Wayland 及 Mir 比较
- 笔记本电脑硬盘不见了_笔记本电脑找不到硬盘原因及解决方法
- 字符串转成压缩bcd码