java项目实现发送邮箱激活用户功能
文章目录
- 具体需求功能:
- (1)登录邮箱配置
- (2)在pom中引入发送邮件依赖
- (3)在yml文件配置发件人用户名密码
- (4)引入邮件发送工具类
- (5)测试发送激活邮件
- (6)第五步
具体需求功能:
前台用户注册_发送邮件配置在用户注册时,通过发送一个邮件给用户,来激活用户,主要是用来看看该用户是否不为空用户。
(1)登录邮箱配置
配置邮箱第三方登录。我们在系统中使用邮箱发送邮件属于第三方登录,而市面上的邮箱默认是不能第三方登录的。我们需要登录邮箱,配置第三方登录。以QQ邮箱配置举例: 登录QQ邮箱,点击设置——账户:
开启POP3/SMTP服务:
用密保手机向1069070069发送短信配置邮件客户端,发送完成后点击我已发送。
记住授权码,该授权码就是配置发件人时的邮箱密码:
(2)在pom中引入发送邮件依赖
<!-- 发邮件 -->
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
(3)在yml文件配置发件人用户名密码
# 发送邮件配置
mail:
# 发件人地址 user: 461618768@qq.com
# 发件人密码 password: yioaiekdcphnbije
(4)引入邮件发送工具类
package com.zhang.travel.utils;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;/*** 发邮件工具类*/
@Component
public final class MailUtils {@Value("${mail.user}")private String USER; // 发件人邮箱地址@Value("${mail.password}")private String PASSWORD; // 如果是qq邮箱可以使户端授权码/*** 发送邮件* @param to 收件人邮箱* @param text 邮件正文* @param title 标题*/public boolean sendMail(String to, String text, String title){try {final Properties props = new Properties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", "smtp.qq.com");// 发件人的账号props.put("mail.user", USER);//发件人的密码props.put("mail.password", PASSWORD);// 构建授权信息,用于进行SMTP进行身份验证Authenticator authenticator = new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 用户名、密码String userName = props.getProperty("mail.user");String password = props.getProperty("mail.password");return new PasswordAuthentication(userName, password);}};// 使用环境属性和授权信息,创建邮件会话Session mailSession = Session.getInstance(props, authenticator);// 创建邮件消息MimeMessage message = new MimeMessage(mailSession);// 设置发件人String username = props.getProperty("mail.user");InternetAddress form = new InternetAddress(username);message.setFrom(form);// 设置收件人InternetAddress toAddress = new InternetAddress(to);message.setRecipient(Message.RecipientType.TO, toAddress);// 设置邮件标题message.setSubject(title);// 设置邮件的内容体message.setContent(text, "text/html;charset=UTF-8");// 发送邮件Transport.send(message);return true;}catch (Exception e){e.printStackTrace();}return false;}}
(5)测试发送激活邮件
①在yml中配置项目路径
②编写service类
public Result register(Member member) {//1.保存用户QueryWrapper<Member> queryWrapper = new QueryWrapper<>();queryWrapper.eq("username", member.getUsername());List<Member> members = memberMapper.selectList(queryWrapper);if (members.size() > 0) {return new Result(false, "该用户名已存在");}//验证手机是否重复QueryWrapper<Member> queryWrapper1 = new QueryWrapper<>();queryWrapper1.eq("phoneNum", member.getPhoneNum());List<Member> members1 = memberMapper.selectList(queryWrapper1);if (members1.size() > 0) {return new Result(false, "该手机号已被注册");}//验证邮箱是否重复QueryWrapper<Member> queryWrapper2 = new QueryWrapper<>();queryWrapper2.eq("email", member.getEmail());List<Member> members2 = memberMapper.selectList(queryWrapper2);if (members2.size() > 0) {return new Result(false, "该邮箱已被注册");}//加密密码String password = encoder.encode(member.getPassword());member.setPassword(password);//设置用户状态member.setActive(false);// 2.发送激活邮件// 生成激活码String activeCode = UUID.randomUUID().toString();// 给用户的邮箱发送一封邮件,该邮件包含一个链接,链接中包含激活码String activeUrl = projectPath + "/frontdesk/member/active?activeCode=" + activeCode;String text = "恭喜您注册成功!<a href = '" + activeUrl + "'>点击激活</a>完成账号认证";mailUtils.sendMail(member.getEmail(), text, "旅游网激活邮件");//保存用户memberMapper.insert(member);return new Result(true, "注册成功");}
(6)第五步
激活用户
public String active(String checkCode) {//根据激活码查询用户QueryWrapper<Member> queryWrapper = new QueryWrapper<>();queryWrapper.eq("checkCode", checkCode);Member member = memberMapper.selectOne(queryWrapper);if (member == null) {return "激活失败,激活码错误!";} else {member.setActive(true);memberMapper.updateById(member);return "激活成功,请<a href='" + projectPath + "/frontdesk/login'>登录</a>";}}
java项目实现发送邮箱激活用户功能相关推荐
- 使用 Java Mail 实现注册时邮箱激活验证功能
最近在做毕设中实现注册功能时使用到了邮箱激活验证,在此总结下. 简介 JavaMail 是提供给开发者处理电子邮件相关的编程接口,它是 SUN 发布的用来处理 email 的 API ,它可以方便地执 ...
- 【邮箱验证码模板】java 整合redis 发送邮箱验证码模板
完整代码地址 :https://gitee.com/alleniverrui/mail-send.git (有帮助的话帮忙点个start) 开启邮箱smtp 权限 以QQ邮箱为例( 将图中所示两个sm ...
- java + maven 实现发送短信验证码功能
如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html ...
- django注册发送邮箱激活账号
在用django开发项目时,会用到注册账号发送邮箱来激活账号或接收手机验证码. 本篇博客写发送邮箱验证码,后续写发送手机验证码. 首先可以配置邮箱的一些必须的参数等 如,张三来注册 x 网站,邮箱是z ...
- java注册界面发送邮箱验证码(无线程版)
邮箱验证注册 本篇文章使用第三方jar包实现邮箱发送验证码来注册用户,该文章未采用线程如果多人访问注册注册页面发送邮件可能会导致服务器崩溃,建议采用线程发送邮件!!! 一.前期准备工作 1.发送验 ...
- JAVA项目中实现邮箱验证的方法
本文只是讲一下大致思路,用个人的QQ邮箱举例,对于企业用户照此方法使用企业邮箱. 首先是需要配置一下邮箱,登录上邮箱找到设置-账户 在下面找到 POP3/IMAP/SMTP/Exchange/Card ...
- day22 案例 发送邮箱激活码 购物车 分析
2019独角兽企业重金招聘Python工程师标准>>> 邮箱激活码: 购物车分析: 转载于:https://my.oschina.net/u/2356966/blog/650116
- 【Java项目】如何设计一个用户签到系统?并且这个签到系统支持7天,14天等不同天数的连续签到功能?
文章目录 问题 Redis的Bitmap MySQL实现 特殊实现思路 问题 这个问题是我再面试阿里的时候遇到的,他问的是: 如果我现在有一个需求,就是我要做一个用户的签到系统,这个签到系统要求做到能 ...
- Laravel 5.7用户注册邮箱激活的功能演示
邮箱验证与激活,可以说是现在web app里的必备功能了,在laravel 5.7以前的版本,你得自行实现这个功能,从5.7开始,开箱即有此功能了.这里我们就演示一下,如何在用户注册了以后,自动发送一 ...
最新文章
- 做科研已经很辛苦了,为什么还要做PPT汇报?
- 批量修改文件名称(Python)
- EEG伪影详解和过滤工具的汇总(二)
- 010_Post请求中文乱码
- wxWidgets:wxSpinCtrlDouble类用法
- java soap协议头_自己调用webservice方法总结(带请求头SoapHeader)
- iphone UITableView及UIWebView的使用
- 品质主管每日工作需要做哪些_游戏配音需要做哪些工作?
- 史上最全的Nokia3230参数大全
- 老师助手为什么总是服务器错误,qq老师助手网络拥挤怎么办
- 晒晒我的“无法操作”的“发财计划”
- OLED、QLED、miniled、microled的区别与优劣势是什么?(非商业转载)
- 荣耀体质称显示网络服务器不可用,华为体脂秤如何重置
- PS之人物通道磨皮法
- 礼堂椅影院椅安装步骤方法
- 【考研初试】复习规划以及推荐资料/老师
- CentOS 安装 nslookup
- 2023.4.6.吉林长春.雾霾.
- SpringBoot 系列教程(六十):SpringBoot整合Swagger-Bootstrap-Ui
- Kafka pixy