本学习日志是使用Springboot和Vue来搭建的后台管理系统:
演示地址:http://118.31.68.110:8081/index.html
账号:root
密码:123
所有代码可以在gitbub上找到,切换到相应分支即可。【代码传送门】
正篇
第一节 spring boot 模块化构建项目
第二节 整合mybatisplus完成用户增删改查
第三节 整合springsecurity实现基于RBAC的用户登录
第四节 springsecurity结合jwt实现前后端分离开发
第五节 使用ResponseBodyAdvice格式化接口输出
第六节 springboot结合redis实现缓存策略
第七节 springboot结合rabbitmq实现队列消息
第八节 springboot结合rabbitmq实现异步邮件发送
第九节 利用springboot的aop实现行为日志管理
第十节 利用Quartz实现数据库定时备份
第十一节 springboot配置log输出到本地文件
第十二节 使用flyway对数据库进行版本管理
第十三节 springboot配合VbenAdmin实现前端登录
第十四节 springboot配合VbenAdmin实现用户CURD
第十五节 基于RBAC的权限管理VbenAdmin前端实现
第十六节 springboot 打包vue代码实现前后端统一部署
番外
2.1 数据库设计原则
3.1 配置apifox自动获取登录的token
13.1 springboot 全局捕捉filter中的异常
14.1 springsecurity整合mybatisplus出现isEnable的问题和解决方案
顺着第七节的内容,现在队列里面有消息了,需要根据这个消息发送一封邮件给新增加的用户,让其激活账号等。这里我们打算新一个邮件服务器应用,这样就可以分应用部署了。
参考第一节,在svbadmin下建一个mailserver的模块,注意这里参考admin-web的创建方式。先建一个springboot项目然后导入,然后维护下svbadmin的pom文件
<modules>
<module>adminserver</module>
<module>mailserver</module>
</modules>
对mailserver的pom文件进行修改
<?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>
<artifactId>svbadmin</artifactId>
<groupId>com.shenfangtao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.shenfangtao</groupId>
<artifactId>mailserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mailserver</name>
<description>mailserver</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>com.shenfangtao</groupId>
<artifactId>admin-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
# mail
spring.mail.host=smtp.qq.com
spring.mail.port=465
spring.mail.username=xxxxxxxxx@qq.com
spring.mail.password=xxxxxxxxxxxxxxx
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
新建一个消费类,用于监听rabbitmq里的消息,然后发送邮件给新增的用户。
@Component
public class MailReceiver {
@Autowired
JavaMailSender javaMailSender;
@Autowired
TemplateEngine templateEngine;
@RabbitListener(queues = "add-user")
public void handler(Message message, Channel channel) throws IOException {
User user = (User) message.getPayload();
System.out.println("有新用户添加进来了:" + user.getName());
Context ctx = new Context();
ctx.setVariable("username",user.getUsername());
ctx.setVariable("name",user.getName());
String mail = templateEngine.process("register.html", ctx);
sendHtmlMail("[email protected]",
user.getEmail(),
"[email protected]",
"svbadmin新用户注册邮件",
mail);
}
/**
* Notes: 发送html格式的邮件
* @param: [from, to, cc, subject, content]
* @return: void
* Author: 涛声依旧 [email protected]
* Time: 2022/7/29 17:00
**/
public void sendHtmlMail(String from, String to, String cc, String subject, String content){
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setBcc(cc);
helper.setSubject(subject);
helper.setText(content,true);
javaMailSender.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
public void sendSimpleMail(String from, String to, String cc, String subject, String content) {
SimpleMailMessage simpMsg = new SimpleMailMessage();
simpMsg.setFrom(from);
simpMsg.setTo(to);
simpMsg.setCc(cc);
simpMsg.setSubject(subject);
simpMsg.setText(content);
javaMailSender.send(simpMsg);
}
}
在resources下建立templates文件夹,在其下创建register.html文件
DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>邮件title>
head>
<body>
<div>邮箱激活div>
<div>您的注册信息是:
<table border="1">
<tr>
<td>用户名td>
<td th:text="${username}">td>
tr>
<tr>
<td>用户昵称td>
<td th:text="${name}">td>
tr>
table>
div>
<div>
<a href="http://www.saphub.cc">核对无误请点击本链接激活账号,完善个人信息a>
div>
body>
html>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.1</version>
</plugin>
代码