Springboot整合邮件发送功能
1、引入依赖以及配置yml文件
<!-- 邮件依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
# Spring配置
spring:
# 邮箱配置
mail:
host: smtp.qq.com
username: *******@qq.com
#邮箱授权码
password: **********
properties:
mail:
smtp:
socketFactory:
class: javax.net.ssl.SSLSocketFactory
port: 465
ssl:
trust: smtp.qq.com
auth: true
starttls:
enable: true
required: true
form: ${spring.mail.username}
邮件授权码则是以qq邮箱为例
进入qq邮箱点击设置–》账号----》找到
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 这个选项
直接右上角搜索也可以
然后点击开启服务
在开启SMTP服务后,你将看到一个名为“授权码”的链接。点击该链接以获取授权码。
系统会要求你输入登录密码进行验证。输入正确的登录密码后,你将获得一个授权码。
请妥善保存这个授权码,因为它将用于连接到QQ邮箱的SMTP服务器。
后面我们会用这个授权码来模拟发送邮箱验证码来完成登录注册找回等功能。
注意事项
授权码是一种重要的凭据,请确保妥善保管,不要与他人分享。
如果你忘记了授权码,你可以通过上述步骤重新生成一个新的授权码。
如果你怀疑授权码泄露或存在安全问题,请立即更新并更换授权码(会自动覆盖之前的授权码)。
然后进行后台编写
@Resource
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}")
private String from;
@ApiOperation("发送简单邮件")
@PostMapping("/admin/sendSimpleEmail")
public AjaxResult sendAdminSimpleEmail(@RequestBody PxEmail email) throws Exception {
//这边是设置发送人邮箱,可以直接塞到字符串数组里面
String[] to = validEmail(email.getReceiverEmail());
if (to != null && to.length > 0) {
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
//同理
if (StringUtils.isNotEmpty(email.getCcEmail())) {
message.setCc(Objects.requireNonNull(validEmail(email.getCcEmail())));
}
message.setSubject(email.getSubject());
message.setText(email.getContent());
message.setFrom(from);
javaMailSender.send(message);
} catch (Exception e) {
invalidAddress(email, e);
sendSimpleMail(email);
e.printStackTrace();
}
}
return AjaxResult.success("发送成功");
}
@ApiOperation("发送HTML邮件")
@PostMapping("/admin/sendHtmlEmail")
public AjaxResult sendAdminHtmlEmail(@RequestBody PxEmail email) {
pxAdminEmailService.insertPxEmail(email);
String[] to = validEmail(email.getReceiverEmail());
if (to != null && to.length > 0) {
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
if (StringUtils.isNotEmpty(email.getCcEmail())) {
helper.setCc(Objects.requireNonNull(validEmail(email.getCcEmail())));
}
helper.setSubject(email.getSubject());
helper.setText(email.getContent(), true);
javaMailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
return AjaxResult.success("发送成功");
}