SpringBoot 整合邮箱发送功能
Aidan Engineer

使用 SpringBoot 进行邮件的发送是一个很实用同时挺常见的功能,比如:验证码的发送、登陆的激活邮件等

这里对使用进行一个简单的记录,具体教程可以查看 官网的 Integration

首先不是对代码进行修改而是先开启想要进行邮箱发送的地址进行配置,在邮箱设置上打开 SMTP 服务,保留生成的授权码后续作为密码进行程序的登录

然后就可以开始写程序了,首先导入依赖:

1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.5.6</version>
</dependency>

然后配置邮箱的参数,

1
2
3
4
5
6
7
8
9
10
11
12
spring:
mail:
# 进行邮箱主机的配置
host: smtp.163.com
# 发送的端口,几乎都是 465
port: 465
# 邮箱账号
username: XXXXXXXXX
# SMTP 授权码
password: XXXXXXXXX
# 使用安全协议
protocol: smtps

编写 MailUtil 类对发送操作进行封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @author Aidan
* @createTime 2021/11/11 10:59
* @GitHub github.com/huaxin0304
* @Blog aidanblog.top
*/

@Component
public class MailClient {
private static final Logger logger = LoggerFactory.getLogger(MailClient.class);

// 借助 JavaMailSender 实现发送操作
private final JavaMailSender mailSender;

public MailClient(JavaMailSender mailSender) {
this.mailSender = mailSender;
}

// 注入发送方地址
@Value("${spring.mail.username}")
private String from;

/**
* 发送方法
* @param to 目标地址
* @param subject 邮件主题
* @param content 邮件内容
*/
public void sendMail(String to, String subject, String content) {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
try {
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
// true 表示开启 html 样式邮件
helper.setText(content, true);
mailSender.send(helper.getMimeMessage());
} catch (MessagingException e) {
logger.error(" 发送邮件失败:" + e.getMessage());
}
}
}

使用模板定义 HTML 页面,发送邮件其实是一个重复性很强的操作,可以提前定义模板然后使用 org.thymeleaf.context.Context 进行具体值的修改

1
2
3
4
5
6
7
8
9
10
11
12
@Test
public void testHtmlMail() {
// 使用 Context 规定变量值(模板实现规定接收)
Context context = new Context();
context.setVariable("username", "Aidan");

// 使用模板引擎对模板页面进行变量传入后作为字符串进行发送
String content = templateEngine.process("/mail/demo", context);
// System.out.println(content);

mailClient.sendMail("XXXXXXXXX", "HTMLTest", content);
}
  • 本文标题:SpringBoot 整合邮箱发送功能
  • 本文作者:Aidan
  • 创建时间:2021-11-23 18:26:57
  • 本文链接:https://aidanblog.top/springboot-integration_email/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论