基于springboot实现注册功能发送激活码至邮箱激活账户登录
文章目錄
- 激活原理
- 運行說明(重點)
- 實例演示(重點)
- 代碼說明
- 項目結構圖
- 準備工作
- emailactivate項目詳細代碼
- common
- UUIDUtils
- config
- DruidDbConfig
- controller
- IndexController
- UserController
- dao
- UserDao
- entity
- User
- service
- UserService
- UserServiceImpl
- EmailService
- EmailServiceImpl
- EmailactivateApplication啟動類
- resources
- mapper
- UserMapper.xml
- templates
- error
- 404.html
- 500.html
- index.html
- login.html
- success.html
- welcome.html
- application.properties
- pom.xml
你是否在某些網站注冊賬戶,注冊時輸入的郵箱,會收到激活的一串鏈接,郵箱點擊進去此鏈接后才能激活賬戶的情況呢,相信你應該也遇到過。那這個功能大概是怎么實現的呢?今天我就帶你們來分析分析。
此功能是基于java開發的,用springboot所完成的。
激活原理
在您注冊的時候,User類中設置一個郵件碼code,同時用戶狀態未激活。郵件碼可以通過UUID實現,這樣在注冊的時候發送一封郵件,把這個郵件碼以html的格式發送到指定郵箱,然后通過點擊鏈接,把郵件碼在提交到后臺進行對比,如果郵件中的郵件碼跟發送時設置的一樣,就把用戶狀態改為激活,然后登陸即可。
運行說明(重點)
由于郵箱在收到激活鏈接時,需要點擊鏈接訪問到線上的地址才可激活,如果是本地localhost運行的地址,點擊郵箱激活鏈接會找不到地址哦,找不到地址則就無法激活當前賬戶登錄的權限了,故此項目就失去了運行實例的意義。 一定要注意 一定要注意 一定要注意。重要的話說三遍!! 建議使用自己的服務器進行訪問。
在此項目的測試演示中,使用的是Ngrok內網穿透所演示的,會把本地端口映射通過特定的網址進行訪問
Ngrok 內網端口映射,在線訪問項目一看即會.
另一篇博文鏈接 https://blog.csdn.net/qq_41157588/article/details/115755791
實例演示(重點)
注意:此demo使用的是qq郵箱的stmp進行發送的郵箱,項目中application.properties的配置需要更改為自己的qq郵箱stmp的服務(qq郵箱->設置->賬戶->翻到底部 開啟IMAP/SMTP服務), 不懂的可百度搜索,開啟后要在自己項目的application中配置自己的stmp服務郵箱及密碼,如不使用qq的stmp服務可在百度搜索其他郵箱stmp開啟方法,在項目的applicaion.properties根據注釋 自行配置即可
如本地的localhost:8080鏈接訪問,點擊郵箱地址會訪問不到本地,需要服務端地址,此處已做重點說明!!推薦配合 服務器 或 Ngrok內網穿透 的鏈接地址,點擊郵箱鏈接會進行激活賬戶.
代碼說明
此代碼的演示是發送郵件至郵箱激活,點擊郵箱鏈接后激活此賬戶?。???還存在一些bug。例如:用戶名和郵箱已存在還可再次注冊 發送郵件等,需要自己后期加入條件判斷做進一步的優化,如賬戶已存在則給予提示等等
復制此項目代碼重點修改application.properties的配置 和UserServiceImpl及 success.html 的鏈接地址
QQ郵箱為例,開啟stmp服務
開啟之后,復制生成的stmp的一串字符,配置到application.properties即可
接下來直奔主題
注冊用戶,輸入郵箱
注冊時,成功發送郵箱至郵箱激活的鏈接激活信息,點擊郵箱鏈接后會激活此賬號的登錄權限。
注冊時,數據庫的也已經添加了新注冊的用戶信息
當不點擊了郵箱的激活鏈接時,code的狀態默認為0,此時賬戶為未激激活狀態,不能進行登錄。
當點擊了郵箱的鏈接時,code的狀態會改為1,此時賬戶為激活狀態,可以進行登錄賬戶
如已經成功激活,再次登錄剛剛注冊的賬戶,此時會登錄成功跳轉到登錄成功后設置的頁面。
項目結構圖
準備工作
數據庫
SQLyog Ultimate v12.3.1 (64 bit) MySQL - 5.7.20-log ********************************************************************* */ /*!40101 SET NAMES utf8 */;create table `useremail` (`id` int (11),`username` varchar (150),`password` varchar (150),`useremail` varchar (150),`status` int (11),`code` varchar (600) ); insert into `useremail` (`id`, `username`, `password`, `useremail`, `status`, `code`) values('1','admin','123456','1136720013@qq.com','1',''); insert into `useremail` (`id`, `username`, `password`, `useremail`, `status`, `code`) values('2','aaa','aaaaaa','483444018@qq.com','0','c14dcdb9c63c4ad7980bda0beb1fcbe4e1f6ba7baa704966a6f9f2ac18acf075');emailactivate項目詳細代碼
根據以上項目結構圖由上而下提供代碼
com.lemon.emailactivate
common
UUIDUtils
package com.lemon.emailactivate.common;import java.util.UUID;/*** @Author: xiangti* @Description:使用UUIDUtils生產發送給用戶的郵箱驗證碼* @Date: Create in 2020/5/29 18:32*/ public class UUIDUtils {public static String getUUID() {return UUID.randomUUID().toString().replace("-", "");} }config
DruidDbConfig
package com.lemon.emailactivate.config;import com.alibaba.druid.pool.DruidDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** Created by lemon on 2020/5/29 18:32* @author xiangti* @CoonfigurationProperties(prefix="xxx")兩種配置方法*/ @Configuration public class DruidDbConfig {private Logger logger = LoggerFactory.getLogger(DruidDbConfig.class);@ConfigurationProperties(prefix = "spring.datasource")@Beanpublic DruidDataSource druidConfig() {return new DruidDataSource();} }controller
IndexController
package com.lemon.emailactivate.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;/*** @Author: xiangti* @Description:* @Date: Create in 2020/5/29 18:34*/ @Controller public class IndexController {/*** 首頁*/@RequestMapping(value = "/")public String index() {return "index";} }UserController
import com.lemon.emailactivate.common.UUIDUtils; import com.lemon.emailactivate.entity.User; import com.lemon.emailactivate.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;/*** @Author: xiangti* @Description:用戶注冊* @Date: Create in 2020/5/29 18:37*/ @Controller @RequestMapping("/user") public class UserController {@Autowiredprivate UserService userService;/*** 注冊* @param user* @return*/@RequestMapping("/registerUser")public String register(User user) {user.setStatus(0);String code = UUIDUtils.getUUID() + UUIDUtils.getUUID();user.setCode(code);userService.register(user);return "success";}/*** 校驗郵箱中的code激活賬戶* 首先根據激活碼code查詢用戶,之后再把狀態修改為"1"*/@RequestMapping("/checkCode")public String checkCode(String code) {User user = userService.checkCode(code);System.out.println(user);//如果用戶不等于null,把用戶狀態修改status=1if (user != null) {//已經點擊郵箱鏈接 將狀態改為1user.setStatus(1);//把code驗證碼清空,已經不需要了user.setCode("");System.out.println(user);userService.updateUserStatus(user);}return "login";}/*** 跳轉到注冊頁面* @return login*/@RequestMapping("/indexPage")public String index() {return "index";}/*** 跳轉到登錄頁面* @return login*/@RequestMapping("/loginPage")public String login() {return "login";}/*** 登錄*/@RequestMapping("/loginUser")public String login(User user, Model model) {User u = userService.loginUser(user);if (u != null) {//登錄成功 跳轉到welcome歡迎頁return "welcome";} else {model.addAttribute("msg", "用戶名或密碼有誤,請確認是否已激活!");return "login";}} }dao
UserDao
import com.lemon.emailactivate.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;/*** @Author: xiangti* @Description:* @Date: Create in 2020/5/29 18:31*/ @Mapper public interface UserDao {/*** 用戶注冊,注冊的時候默認狀態為0:未激活,并且調用郵件服務發送激活碼到郵箱** @param user*/void register(User user);/*** 點擊郵箱中的激活碼進行激活,根據激活碼查詢用戶,之后再進行修改用戶狀態為1進行激活** @param code* @return*/User checkCode(String code);/*** 激活賬戶,修改用戶狀態為“1”進行激活** @param user*/void updateUserStatus(User user);/*** 登錄,根據用戶狀態為“1”來查詢** @param user* @return*/User loginUser(User user);/*** 查出當前用戶的狀態** @param status* @return*/User selStatus(String status);}entity
User
package com.lemon.emailactivate.entity;import java.io.Serializable;/*** @Author: xiangti* @Description:* @Date: Create in 2020/5/12 18:30*/ public class User implements Serializable {private Integer id;private String username;private String password;private String useremail;/*** 狀態:0代表未激活,1代表激活*/private Integer status;/*** 利用UUID生成一段數字,發動到用戶郵箱,當用戶點擊鏈接時* 在做一個校驗如果用戶傳來的code跟我們發生的code一致,更改狀態為“1”來激活用戶*/private String code;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public String getUseremail() {return useremail;}public void setUseremail(String useremail) {this.useremail = useremail;}public void setPassword(String password) {this.password = password;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", useremail='" + useremail + '\'' +", status=" + status +", code='" + code + '\'' +'}';} }service
UserService
package com.lemon.emailactivate.service;import com.lemon.emailactivate.entity.User;/*** @Author: xiangti* @Description:* @Date: Create in 2020/5/12/29 18:32*/ public interface UserService {/*** 用戶注冊** @param user*/void register(User user);/*** 根據激活碼code查詢用戶,之后再進行修改狀態** @param code* @return*/User checkCode(String code);/*** 激活賬戶,修改用戶狀態** @param user*/void updateUserStatus(User user);/*** 登錄,根據用戶狀態為“1”來查詢** @param user* @return*/User loginUser(User user); }UserServiceImpl
package com.lemon.emailactivate.service.impl;import com.lemon.emailactivate.dao.UserDao; import com.lemon.emailactivate.entity.User; import com.lemon.emailactivate.service.EmailService; import com.lemon.emailactivate.service.UserService;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;@Service @Transactional public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;/*** 注入郵件接口*/@Autowiredprivate EmailService mailService;/*** 用戶注冊,同時發送一封激活郵件** @param user*/@Overridepublic void register(User user) {userDao.register(user);//獲取激活碼String code = user.getCode();System.out.println("code:" + code);//主題String subject = "來自激活用戶認證的郵件";//user/checkCode?code=code(激活碼)是我們點擊郵件鏈接之后根據激活碼查詢用戶,如果存在說明一致,將用戶狀態修改為“1”激活//上面的激活碼發送到用戶注冊郵箱//**************************************本地測試的路徑 會失效。**************************************************************//String context = "<a href=\"/user/checkCode?code="+code+"\">激活請點擊:"+code+"</a>";//String context = "<a href=\"http://localhost:8080/user/checkCode?code="+code+"\">激活請點擊:"+code+"</a>";//*************************************************************************************************************************//user/checkCode?code=code(激活碼)是我們點擊郵件鏈接之后根據激活碼查詢用戶,如果存在說明一致,將用戶狀態修改為“1”激活//上面的激活碼發送到用戶注冊郵箱//注意:此處的鏈接地址,是項目內部地址,如果我們沒有正式的服務器地址,暫時無法從qq郵箱中跳轉到我們自己項目的激活頁面//方式1 注意看上述說明(如不服務器測試 把上面本地代碼鏈接注釋)String context = "<a href=\"服務器端地址/user/checkCode?code=" + code + "\">激活用戶認證請點擊=> " + code + "</a>";//方式2 注意看上述說明(如不服務器測試 把上面本地代碼取消注釋)//String context = "<a href='服務端地址/user/checkCode?code='+code+'>激活用戶認證請點擊=> '+code+'</a>";//發送激活郵件mailService.sendHtmlMail(user.getUseremail(), subject, context);}/*** 根據激活碼code進行查詢用戶,之后再進行修改狀態** @param code* @return*/@Overridepublic User checkCode(String code) {return userDao.checkCode(code);}/*** 激活賬戶,修改用戶狀態** @param user*/@Overridepublic void updateUserStatus(User user) {userDao.updateUserStatus(user);}/*** 登錄** @param user* @return*/@Overridepublic User loginUser(User user) {User user1 = userDao.loginUser(user);if (user1 != null) {return user1;}return null;} }EmailService
package com.lemon.emailactivate.service;/*** @Author: xiangti* @Description:* @Date: Create in 2020/5/12/29 18:32*/ public interface EmailService {/*** 發送文本郵件,注冊部分用不到* @param to* @param subject* @param content*///void sendSimpleMail(String to, String subject, String content);/*** 發送HTML郵件,方便用戶點擊附帶的code用來驗證激活賬戶** @param to 收件人* @param subject 主題* @param content 內容*/void sendHtmlMail(String to, String subject, String content); }EmailServiceImpl
package com.lemon.emailactivate.service.impl;import com.lemon.emailactivate.service.EmailService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service;import javax.mail.MessagingException; import javax.mail.internet.MimeMessage;/*** @Author: xiangti* @Description:* @Date: Create in 2020/5/12/ 18:20*/ @Service public class EmailServiceImpl implements EmailService {private final Logger logger = LoggerFactory.getLogger(this.getClass());@Autowiredprivate JavaMailSender mailSender;/*** 配置文件中我的qq郵箱*/@Value("${spring.mail.from}")private String from;/*** 發送HTML郵件** @param to 收件者* @param subject 郵件主題* @param content 文本內容*/@Overridepublic void sendHtmlMail(String to, String subject, String content) {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = null;try {helper = new MimeMessageHelper(message, true);//郵件發送人helper.setFrom(from);//郵件主題helper.setSubject(subject);//郵件接收人helper.setTo(to);//郵件內容helper.setText(content, true);//發送郵件mailSender.send(message);//日志信息logger.info("郵件已經發送。");} catch (MessagingException e) {logger.error("發送郵件時發生異常!", e);}} }EmailactivateApplication啟動類
package com.lemon.emailactivate;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication //@MapperScan("com.lemon.emailactivate.dao") //等同于 dao接口的@Mapper注解 public class EmailactivateApplication {public static void main(String[] args) {SpringApplication.run(EmailactivateApplication.class, args);}}resources
mapper
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.lemon.emailactivate.dao.UserDao"><!--注冊用戶--><insert id="register" parameterType="User">insert into useremail ( username, password,useremail,status,code)values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{useremail,jdbcType=VARCHAR},#{status,jdbcType=INTEGER},#{code,jdbcType=INTEGER})</insert><!--根據激活碼code查詢用戶--><select id="checkCode" parameterType="String" resultType="User">select * from useremail where code = #{code}</select><!--激活賬戶,修改用戶狀態--><update id="updateUserStatus" parameterType="User">update useremail set status=1,code=null where id=#{id}</update><!--登錄,根據 status=1 進行查詢--><select id="loginUser" resultType="User">select * from useremail where username=#{username} and password=#{password} and status=1</select></mapper>templates
error
404.html
500.html
可自行百度搜索報錯頁面效果,也可不寫404和500頁面。
index.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> <head><meta charset="UTF-8"><title>注冊頁面</title><!-- 引入 Bootstrap在線cdn --><link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body><div class="row clearfix" style="text-align: center"><div class="page-header"><h1><small>注冊中心</small></h1></div> </div><div align="center"><form action="/user/registerUser" method="post" style="width: 30%"><div class="form-group"><label for="username">用戶名</label><br><input type="text" class="form-control" id="username" maxlength="10" name="username" placeholder="請輸入注冊的用戶名"required/><br></div><div class="form-group"><label for="password">登錄密碼</label><br><input type="password" class="form-control" maxlength="16" id="password" name="password"placeholder="請輸入注冊的密碼" required/><br></div><div class="form-group"><label for="email">郵箱地址</label><br><input type="email" class="form-control" id="email" name="useremail" placeholder="請輸入可接收郵件的郵箱" required><br></div><input type="submit" class="btn btn-primary" value="確認注冊" onclick="return confirm('確認注冊嗎?')"/></form> </div><div class="row clearfix" style="text-align: center"><br><a href="/user/loginPage" class="btn btn-warning">去登錄頁面</a> </div></body> </html>login.html
<html lang="en" xmlns:th="http://www.thymeleaf.org"> <head><meta charset="UTF-8"><title>登錄頁面</title><!-- 引入 Bootstrap在線cdn --><link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body><div class="row clearfix" style="text-align: center"><div class="page-header"><h1><small>登錄頁面</small></h1></div> </div><div align="center"><form action="/user/loginUser" method="post" style="width: 30%"><!--如果msg的值為空 不顯示提示的信息--><span th:text="${msg}" th:if="${not #strings.isEmpty(msg)}" style="color: red"></span><span th:text="${status}" style="color: pink"></span><div class="form-group"><label for="username">用戶名</label><br><input type="text" class="form-control" id="username" maxlength="10" name="username" placeholder="請輸入您的賬戶"required style="width: 60%"/><br></div><div class="form-group"><label for="password">密碼</label><br><input type="password" class="form-control" maxlength="16" id="password" name="password"placeholder="請輸入您的密碼" required style="width: 60%"/><br></div><!--判斷是否激活用的--><!--<input type="hidden" name="status" value="1">--><input type="submit" class="btn btn-primary" value="登錄賬號"/></form> </div><div class="row clearfix" style="text-align: center"><br><a href="/user/indexPage" class="btn btn-warning">去注冊頁面</a> </div></body> </html>success.html
<html lang="en"> <head><meta charset="UTF-8"><title>注冊成功</title><!-- 引入 Bootstrap在線cdn --><link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <script type="text/javascript">function countDown(secs, surl) {//alert(surl);var jumpTo = document.getElementById('jumpTo');jumpTo.innerHTML = secs;if (--secs > 0) {setTimeout("countDown(" + secs + ",'" + surl + "')", 1000);} else {location.href = surl;}} </script> <body><div class="row clearfix" style="text-align: center;background-color: pink;color: blue;margin-top: 30px"><div style="font-size: 20px"><span>郵件已成功發送,請點擊郵箱鏈接激活用戶哦~ </span><span id="jumpTo" style="color: black">15</span>秒后將自動跳轉到登錄頁</div> </div> <script type="text/javascript">// 15 秒后跳轉的頁面countDown(15,'http://localhost:8080/user/loginPage');//地測試的路徑(15s后自動跳轉到登錄頁)//countDown(15, 'http://服務端地址/user/loginPage');//服務器測試的路徑 </script></body> </html>welcome.html
處的歡迎頁是我找的源碼設置的,歡迎頁可自定義為自己想設置的內容,此歡迎頁效果圖如下圖所示,可自己更改。
application.properties
注意設置數據庫連接需要更改為自己的,如不是qq郵箱地址 此處要更改郵箱類型地址,此處為qq郵箱。 以及還要配置自己郵箱stmp密碼 不會開啟郵箱stmp的參考文章頂部方法配置
server.port=8080# MyBatis相關配置 spring.devtools.remote.restart.enabled=true spring.devtools.restart.additional-paths=src/main # 數據庫連接配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/數據庫?characterEncoding=utf-8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=12345678 spring.http.encoding.charset=UTF-8 spring.http.encoding.force=true spring.http.encoding.enabled=true server.tomcat.uri-encoding=UTF-8 #MyBatis別名 mybatis.type-aliases-package=com.lemon.emailactivate.entity mybatis.mapper-locations=mapper/*.xml spring.thymeleaf.prefix=classpath:/templates/#QQ smtp.qq.com #sina smtp.sina.cn #aliyun smtp.aliyun.com #163 smtp.163.com # ↑ 郵箱服務器地址#此處設置的stmp為qq郵箱 spring.mail.host=smtp.qq.com #郵箱用戶名(使用自己的郵箱) spring.mail.username=xxx.qq.com #郵箱密碼(注意:qq郵箱應該使用獨立密碼,去qq郵箱設置里面開啟POP3/SMTP服務) spring.mail.password=輸入郵箱stmp字符 #編碼格式 spring.mail.default-encoding=UTF-8 ##發送郵件地址(使用自己的郵箱) spring.mail.from=xxxx.qq.compom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.lemon</groupId><artifactId>emailactivate</artifactId><version>0.0.1-SNAPSHOT</version><name>emailactivate</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--MyBatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!--SpringBoot測試支持--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--MySQL--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--SpringBoot熱部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 這個需要為 true 熱部署才有效 --></dependency><!--Druid數據庫連接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!--郵件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!--thymeleaf--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>此代碼只供一個發送郵件至郵箱激活,存在一些bug。例如:用戶名郵箱已存在還注冊 發送郵件等,需要自己后期加入條件判斷做進一步的優化
此項目代碼已完全提供完畢,如果有遇到問題聯系qq1136720013,vx:it566666 ,希望給個贊評論支持一下,感謝支持,你的支持是我創作最大的動力,愿開發道路上一起更進一步!
總結
以上是生活随笔為你收集整理的基于springboot实现注册功能发送激活码至邮箱激活账户登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钉钉邮箱登录入口_阿里企业邮箱发信失败
- 下一篇: Django 重写authenticat