在用户注册账户后,为防止恶意注册,我们通常会提示用户绑定邮箱,并进行邮箱激活确定邮箱是本人在用的。以下页面都是通过thyemleaf渲染。

验证页面


我现在是已验证激活状态,如未验证会显示邮箱未验证,需点击右边验证邮箱,邮箱页面代码如下:

<div class="layui-form-item"><label for="email" class="layui-form-label">邮箱</label><div class="layui-input-inline"><input th:value="${Email}" id="email" name="email" autocomplete="off" class="layui-input" placeholder="请填写邮箱"/><em th:style="${Email!=null && Email.length() != 0?'color:#c00;display:inline':'display:none'}"th:text="${EmailVerify=='1'?'(已验证)':'(尚未验证)'}"></em></div><div class="layui-form-mid layui-word-aux">如果您在邮箱已激活的情况下,变更了邮箱,需<a href="/aa/email" style="font-size: 12px; color: #4f99cf;">重新验证邮箱</a>。</div>
</div>

别忘了验证邮箱合不合法

     var field = data.field;var emailreg = new RegExp("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$");var email = field.email;if (!emailreg.test(email) && email != null && email.length != 0) {layer.msg("邮箱不合法");return false;}

点击验证邮箱跳转到邮箱验证页面,如果你不需要跳转,也可以直接点击验证,在js里获取input的值跳转后台方法即可,我因为有些提示和要求需要展示,所以先跳转到另一个页面再激活,代码如下:

 <div class="fly-panel fly-panel-user" pad20><div class="layui-tab layui-tab-brief" lay-filter="user"><ul class="layui-tab-title"><li class="layui-this">激活邮箱</li></ul><div class="layui-tab-content" id="LAY_ucm" style="padding: 20px 0;"><ul class="layui-form"><li class="layui-form-li"><label>您的邮箱:</label><input type="hidden" id="user_id" th:value="${User_id}"/><input type="hidden" id="email" th:value="${Email}"/><span class="layui-form-text" th:text="${Email}"></span><em style="color:#c00;" th:text="${EmailVerify=='1'?'(已验证)':'(尚未验证)'}"></em><button type="button" class="layui-btn" id="btnSendEmailVerify" name="btnSendEmailVerify"th:style="${EmailVerify()=='1'?'display:none;':'display:inline;'}"onclick="emailVerify()">点击激活</button></li><li class="layui-form-li" style="margin-top: 20px; line-height: 26px;"><div>1. 如果您未收到邮件,或激活链接失效,您可以<a class="layui-form-a" style="color:#4f99cf;" id="LAY-activate" href="javascript:;"th:attr="email=${Email}">重新发送邮件</a>,或者<a class="layui-form-a" style="color:#4f99cf;" href="/kg/set">更换邮箱</a>;</div><div>2. 如果您始终没有收到xxxxx发送的邮件,请注意查看您邮箱中的垃圾邮件;</div><div>3. 如果你实在无法激活邮件,您还可以联系:xxxxx</div></li></ul></div></div></div>

如果邮箱已验证,按钮是不显示的,只有在未验证状态下,才会显示激活按钮。

<script>//点击激活邮箱按钮,按钮不可再点击,并60秒倒计时function emailVerify() {var user_id = $("#user_id").val();var email = $("#email").val();var idx = Math.floor(60);$("#btnSendEmailVerify").text(idx + "秒后重新发送");$("#btnSendEmailVerify").attr("onclick", "");var intv1 = setInterval(function () {if (idx > 1) {idx--;$("#btnSendEmailVerify").addClass("layui-btn-disabled");$("#btnSendEmailVerify").text(idx + "秒后重新发送");} else {$("#btnSendEmailVerify").text("点击激活");$("#btnSendEmailVerify").attr("onclick", "getPhoneCode();");$("#btnSendEmailVerify").removeClass("layui-btn-disabled");clearInterval(intv1)}}, 1000)//发送邮箱激活链接方法$.post('/email/sendVerifyCode', {user_id: user_id,email: email}, function (json) {try {json = eval('(' + json + ')');} catch (e) {}if (json.success) {layer.alert(json.msg);} else {layer.alert(json.msg);}});}
</script>

后台代码,发送激活链接,代码如下:

/*** 发送邮箱验证链接** @param request* @param email* @return*/@RequestMapping("sendVerifyCode")@ResponseBodypublic LayuiJson sendVerifyCode(HttpServletRequest request, String email) {LayuiJson json = new LayuiJson();try {//获取urlString link = ReadPropertiesUtil.readProperty("server.application.url");//获取userUser user = (User) request.getSession().getAttribute("user");//定义邮箱字符串,加密String emailVerify = "sfgfsavfnafv" + MD5.MD5Encode(user.getEmail());request.getSession().setAttribute("emailVerify", emailVerify);//生成链接String emailVerifyLink = link + "/email/verify?em=" + emailVerify;//导入MailUtil,发送链接MailUtil.send(email, "邮箱激活", "邮件来自xxxx,请点击链接激活邮箱:" + emailVerifyLink, false);json.setMsg("发送成功,请注意查收");json.setSuccess(true);} catch (Exception e) {e.printStackTrace();json.setMsg("发送失败!");json.setSuccess(false);}return json;}

发送成功后,邮箱会收到消息,如果收件箱没有,就去垃圾箱找一找。

点击链接激活邮箱,修改邮箱激活状态,提示激活成功与否。

/*** 激活邮箱** @param em* @return*/@RequestMapping("verify")public String verify(HttpServletRequest request, String em) {//不在同一浏览器,提示重新登陆try {if (!LoginUserCheckUtil.isLogin(request)) {return "redirect:/aa/login";}//获取userUser emailUser = (User) request.getSession().getAttribute("user");String email = emailUser.getEmail();String emailVerify = "sfgfsavfnafv" + MD5.MD5Encode(email);//邮箱对比if (emailVerify.equals(em)) {//激活成功if (userService.emailVerify(email)) {User user = userService.getUserList(emailUser.getUser_id());request.getSession().setAttribute("user", user);//跳转页面,提示成功return "redirect:/aa/verify?code=1";//激活失败} else {//跳转页面,提示失败return "redirect:/aa/verify?code=0";}}} catch (Exception e) {e.printStackTrace();}return "redirect:/kg/emailVerify?verifyCode=0";}

根据传过去的值显示邮箱激活成功与失败。

我是大嘴,技术还处于新手,如果有错误和不足请帮忙指出,共同学习,共同进步。
如果需要学习视频,也可以私信我跟我要。

如何通过邮箱发送链接进行邮箱验证相关推荐

  1. nodejs+express实现用户登录或者注册通过邮箱发送验证码(redis验证)

    ❤️砥砺前行,不负余光,永远在路上❤️ ❤️砥砺前行,不负余光,永远在路上❤️ 简要目录 实现思路 一.后端部分(文件目录可以看图2) 1.redis部分 2.nodemailer部分 3.发送邮件的 ...

  2. java邮箱发送验证码_java 邮箱发送验证码

    packagecom.*******.util.email;importorg.apache.commons.mail.EmailException;importorg.apache.commons. ...

  3. Java 实现邮箱发送验证码——QQ邮箱为例

    JAVA实现使用QQ邮箱发送验证码功能 QQ邮箱设置 第一步 ,打开QQ邮箱(地址:https://mail.qq.com/): 第二步 ,登录后点击设置 第三步,点击账户,下拉找到POP3/IMAP ...

  4. Java实现QQ邮箱发送给网易邮箱,发送邮件+附件

    实现功能: Java实现 QQ邮箱 给网易邮箱发送邮件 获取邮件信息并下载邮件的附件 前置功能 案例以QQ邮箱为例说明: 首先登录QQ邮箱将SMTP服务开启,会得到一个授权码. 创建一个Springb ...

  5. java中邮箱发送_java实现邮箱发送(java mail)

    导包:mail.jar import java.util.Properties; import javax.mail.Message; import javax.mail.Message.Recipi ...

  6. PHPMailer邮箱发送配置匿名邮箱

    亲测php5.6,php7.2都可以.Github php5.6 include文件后,也需要use文件,php7.2直接composer安装 use PHPMailer\PHPMailer\PHPM ...

  7. Java使用QQ邮箱或网易163邮箱发送自定义CSS样式邮件

    Java使用QQ邮箱或网易163邮箱发送自定义CSS样式邮件 前言 一.战前准备 1.导入依赖 2.配置文件 3.邮箱工具类 二.战争开始 1.QQ邮箱发送 2.网易邮箱发送 战后反思 前言 我们可能 ...

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

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

  9. java发送qq邮箱验证_java代码发送邮箱验证码与qq邮箱smtp服务

    importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;import ...

最新文章

  1. 当人工智能遇到神经科学,二者联手势不可挡!
  2. 自学python之路(day2)
  3. How should I set up tag files for a multi-level directory hierarchy? kiss snow
  4. 给爸妈最硬核的春节礼物,走入百度大字版APP研发幕后
  5. delphi读取excel
  6. 用Pytorch实现逻辑回归分类
  7. 操作系统知识点_内存管理
  8. MATLAB计算卷积幂函数,数论小记(示例代码)
  9. ffmpeg源码国内gitee下载
  10. 在JFlash中添加未知类型的单片机
  11. 泰克示波器时频多域信号频谱谐波分析
  12. 使用Easy CHM工具对文件生成API文档
  13. Spring入门学习推荐
  14. RapidShare 真实链接抓取助手
  15. android ogg资源,Android实现OGG音频的无缝循环播放
  16. 高级编程语言分类_高级编程语言的分类
  17. shell中单引号和双引号的区别-经典解释
  18. 谷歌学术 rss_更改Google RSS文件夹
  19. 北斗系统基础知识2(北斗一代定位原理详述)
  20. 机器学习笔记(通俗易懂)---监督学习介绍:分类与回归,泛化~过拟合与欠拟合(2)

热门文章

  1. java生成多级目录
  2. 解决IE8的Sysfader错误问题
  3. 今天是 Java 诞生日,Java 27 岁了~
  4. SSM搭建二手市场交易平台(一):开发流程与环境搭建
  5. nova8pro能升级鸿蒙吗,华为nova8pro可以升级鸿蒙系统吗-什么时候可以升级鸿蒙系统...
  6. 每天记录学习的新知识:开源代码是否可以商用在项目中?
  7. Excel实用操作技巧
  8. 七牛云免费对象存储,并绑定到cloudreve中
  9. 毕业设计第二周学习心得
  10. imu_tk源码分析