日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于springboot实现注册功能发送激活码至邮箱激活账户登录

發布時間:2023/12/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于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的配置 和UserServiceImplsuccess.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

處的歡迎頁是我找的源碼設置的,歡迎頁可自定義為自己想設置的內容,此歡迎頁效果圖如下圖所示,可自己更改。

<html lang="en"> <head><meta charset="UTF-8"><title>welcome</title><style>* {margin: 0;padding: 0;}body {overflow: hidden;}/*canvas{ background: #0c0c0c; }*/</style> </head> <body> <canvas id="canvas"> 您的瀏覽器不支持canvas標簽,請您更換瀏覽器</canvas> <script>var canvas = document.getElementById("canvas");var can = canvas.getContext("2d");var s = window.screen;//獲取屏幕var w = canvas.width = s.width;//獲取屏幕寬度var h = canvas.height = s.height;//獲取屏幕高度can.fillStyle = color2();var words = Array(256).join("1").split("");//設置一個包含256個空元素的數組,join("1")用來把數組里的元素拼接成字符串,split("")過濾掉數組里的空元素setInterval(draw, 50);// can.font="30px 微軟雅黑"; //只設置一個不生效,一定要兩個屬性都設// //繪制實心的文本:繪制的文本,文本的坐標x,文本的坐標y// can.fillText("黑客帝國",100,100);// // setInterval(draw,50);function draw() {//can.fillRect()畫一個實心矩形:坐標x,坐標y,矩形寬,舉行高can.fillStyle = 'rgba(0,0,0,0.05)';can.fillRect(0, 0, w, h);can.fillStyle = color2();words.map(function (y, n) {text = String.fromCharCode(Math.ceil(65 + Math.random() * 57)); //轉換為鍵盤上值x = n * 10;can.fillText(text, x, y)words[n] = (y > 758 + Math.random() * 484 ? 0 : y + 10);});//數組元素的一個映射}//獲取隨機顏色,三種方法function color1() {var colors = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f'];var color = "";for (var i = 0; i < 6; i++) {//Math.random()產生一個0-1之間的小數var n = Math.ceil(Math.random() * 15);color += "" + colors[n];// console.log(color);}return '#' + color;}function color2() {var color = Math.ceil(Math.random() * 16777215).toString(16);// for( var i=color.length; i<6; i++ ){// color = '0'+color;// }while (color.length < 6) {color = '0' + color;}return '#' + color;}function color3() {return "#" + (function (color) {return new Array(7 - color.length).join("0") + color;//神奇的方法,總共字符串有6位,如果只產生了3位,則前面應該補三個0,在長度為7-3=4的空數組中利用join插入0,則為['',0,'',0,'',0,''],剛好三個0補在前面})((Math.random() * 0x1000000 << 0).toString(16))// << 0 也是一種取整的方法}</script> </body> </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.com

pom.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实现注册功能发送激活码至邮箱激活账户登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。