Springboot-cli 开发脚手架系列
前言
本教程分为普通版邮件发送,和自定模板发送。
- 普通发送
内容以字符串的形式发送,样式单一。 - 自定义模块发送
可自定义Html模板,样式丰富,配合thymeleaf绑定变量,实现更自由的数据绑定。
1. 开通发送邮件功能
- 这里以QQ邮箱为例
- 打开qq邮箱,切换至账号菜单
- 拉到下面账号安全,开启
IMAP/SMTP服务
- 保存这个秘钥
- 接下来我们开始实战案例
2. 环境配置
- 导入依赖
<!-- hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
<!-- 邮件依赖,配置hutool工具包发送邮件 -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
<!-- 模板引擎,制作邮件模板 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
- yml配置
email:
host: smtp.qq.com
from: xxx@qq.com
# 密码自行登录邮箱开启获取,操作很简单
pass: xxxxxxxxxxxxxx
port: 25
3. 邮件配置
EMailConfig.java
@Data
@Component
@ConfigurationProperties(prefix = EMailConfig.PRE)
public class EMailConfig {
public final static String PRE = "email";
private String host;
private Integer port;
private String from ;
private String pass;
public MailAccount getAccount() {
MailAccount account = new MailAccount();
account.setAuth(true);
account.setHost(host);
account.setPort(port);
account.setFrom(from);
account.setUser(from);
account.setPass(pass);
return account;
}
}
4. 邮件服务
EmailService.java
/**
* 邮件服务
*
* @author ding
*/
@Service
@Slf4j
@RequiredArgsConstructor
public class EmailService {
private final EMailConfig eMailConfig;
private final TemplateEngine templateEngine;
/**
* 发送邮件
*
* @param to 目标邮箱
* @param subject 标题
* @param content 内容
*/
public void send(String to, String subject, String content) {
MailUtil.send(eMailConfig.getAccount(), to, subject, content, false);
}
/**
* 发送邮件(带附件)
*
* @param to 目标邮箱
* @param subject 标题
* @param content 内容
* @param files 附件(可选)
*/
public void send(String to, String subject, String content, File... files) {
MailUtil.send(eMailConfig.getAccount(), to, subject, content, false, files);
}
/**
* 发送邮件-读取自定义模板
*
* @param to 目标邮箱
* @param subject 标题
* @param context 内容
*/
public void send(String to, String subject, Context context) {
String template = templateEngine.process("emailTemplate", context);
MailUtil.send(eMailConfig.getAccount(), to, subject, template, true);
}
/**
* 发送邮件-读取自定义模板(带附件)
*
* @param to 目标邮箱
* @param subject 标题
* @param context 内容
* @param files 附件
*/
public void send(String to, String subject, Context context, File... files) {
String template = templateEngine.process("emailTemplate", context);
MailUtil.send(eMailConfig.getAccount(), to, subject, template, true, files);
}
}
- 模板文件放置在
src/main/resources/templates
目录下
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>激活码</title>
</head>
<body>
<h4>欢迎登录Springboot-cli</h4>
您好,您的激活码为<span style="color: blue" th:text="${code}"></span>,请在5分钟内使用完成操作。
</body>
</html>
- 整体项目结构
5. 效果演示
- 编写测试类
@SpringBootTest
class DomeApplicationTests {
@Autowired
private EmailService emailService;
@Test
void send1() {
emailService.send("xxx@qq.com", "测试邮件", "欢迎使用springboot-cli开发脚手架");
}
@Test
void send2() {
File file = new File("D:\\test\\test.txt");
emailService.send("xxx@qq.com", "测试邮件", "欢迎使用springboot-cli开发脚手架", file);
}
@Test
void send3() {
Context context = new Context();
context.setVariable("code", 6666);
emailService.send("xxx@qq.com", "激活码模板邮件", context);
}
@Test
void send4() {
File file = new File("D:\\test\\test.txt");
Context context = new Context();
context.setVariable("code", 6666);
emailService.send("xxx@qq.com", "激活码模板邮件", context, file);
}
}
- 普通邮件
- 自定义模板
6. 源码分享
- Springboot-cli开发脚手架,集合各种常用框架使用案例,完善的文档,致力于让开发者快速搭建基础环境并让应用跑起来。
- 项目源码github地址
- 项目源码国内gitee地址