大家好,今天来写一如何实现前端检验,定时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);
}
}

至此邮箱发送验证较为完整的版本前端校验,后台发送就出现了,谢谢大家。能看到这里,互相学习和分享

如何实现邮箱发送验证以及前端校验相关推荐

  1. 使用SpringBoot实现QQ邮箱发送验证码校验、注册的步骤详解(配图)

    迷途漫漫,终有一归.--米兰昆德拉 引入的依赖 <!--email--><dependency><groupId>org.springframework.boot& ...

  2. 引入QQ邮箱发送验证码进行安全校验

    其他方案=>引入短信服务发送手机验证码进行安全校验 操作相对复杂且收费,详细教程可供参考选择 最近想给自己的项目在注册时加点安全校验,本想着使用短信验证码,奈何囊中羞涩只能退而求次改用QQ邮箱验 ...

  3. 网易邮箱发送验证短信的工具类

    最近代码刚好用到邮箱验证,所以自己就总结了一下基于网易163邮箱的使用,仅供参考一下: import javax.mail.Message; import javax.mail.Session; im ...

  4. SpringBoot中快速实现邮箱发送

    前言 在许多企业级项目中,需要用到邮件发送的功能,如: 注册用户时需要邮箱发送验证 用户生日时发送邮件通知祝贺 发送邮件给用户等 创建工程导入依赖 <!-- 邮箱发送依赖 --> < ...

  5. react-hooks + node 使用qq邮箱发送验证码,验证修改密码

    在平常,我们写登录注册react项目时,我们可能会考虑使用QQ邮箱发送验证码登录注册,或者使用QQ邮箱验证来修改密码,下面,我们就来使用QQ邮箱来简单发送个邮件. 1.当我们想在react项目中使用Q ...

  6. Java基础——正则表达式_校验QQ号码、手机号是否满足规则、邮箱格式验证

    有以下案例: 1 需求:校验qq号码.要求必须是5-15位数:0不能开头:非正则表达式实现:正则表达式实现 package com.xawl.demo;import java.util.Scanner ...

  7. 如何通过邮箱发送链接进行邮箱验证

    在用户注册账户后,为防止恶意注册,我们通常会提示用户绑定邮箱,并进行邮箱激活确定邮箱是本人在用的.以下页面都是通过thyemleaf渲染. 验证页面 我现在是已验证激活状态,如未验证会显示邮箱未验证, ...

  8. java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...

    短信验证码 短信验证码都是调用一些接口来进行短信的发送,短信验证码在登录.注册等操作中使用的最广泛,本文这一节演示如何使用Java制作一个简单的短信验证码登录. 我这里演示使用的是聚合数据的短信接口( ...

  9. java发送qq邮箱验证_JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)

    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...

最新文章

  1. 支持向量机算法原理简介
  2. JVM运行时数据区---堆(堆内存)
  3. Linux下使用Eclipse开发C/C++程序
  4. Linux的僵尸进程及其解决方法(转)
  5. java获取当前系统时间毫秒_java 获取当前系统时间简写 | 学步园
  6. 经典C语言程序100例之五六
  7. ios 返回不会自动刷新页面问题
  8. php 自旋锁,Linux内核自旋锁使用笔记
  9. 带有Spring和Maven教程的JAX–WS
  10. web系统管理系统_使用无头管理系统创建灵活的Web内容
  11. java初始化配置_java – 初始化没有XML配置的数据库,但使用@Configuration
  12. Windows10下VB6.0开发——写入数据到文件操作
  13. 使用NEWSEQUENTIALID解决GUID聚集索引问题
  14. android 人脸特征提取方法,qs_face_points_android
  15. 射频电路设计的常见问题及经验总结
  16. 光纤模块与光纤收发器使用方法
  17. 云时代主机托管的现状和趋势
  18. X11 Wayland 及 Mir 比较
  19. 笔记本电脑硬盘不见了_笔记本电脑找不到硬盘原因及解决方法
  20. 字符串转成压缩bcd码

热门文章

  1. 用 50 张游戏显卡检测癌症,这是“业余”程序员?
  2. 三星发力中端手机市场将给中国手机带来压力
  3. java解决循环引用_Java 中如何避免循环引用,解决相互依赖的问题
  4. 苹果手机里微信不支持
  5. Element UI 上传一张图片后隐藏上传按钮
  6. 华硕笔记本电脑怎么恢复出厂设置?
  7. 电脑睡眠模式快捷方式
  8. 走近前端工程化-WebPack之loader的入门级知识
  9. 子窗口控件 -windows程序设计(网易小海星的博客)
  10. 新闻稿发布对新闻通稿有哪些具体的要求?