1. 导入对应的坐标
2. 创建一个邮件内容的实体类org.springframework.boot spring-boot-starter-mail
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EmailDto {
@NotEmpty
private String to;
@NotBlank
private String subject;
@NotBlank
private String content;
}
3. 设计发送邮件的服务类
这里只展示实现类
3.1 ymal文件设计spring:
mail:
host: smtp.qq.com
username: 2282527360@qq.com # 收件人(我这里写死了,这个可以根据业务场景灵活变换)
password: qkmhrhamgtjyebaa # 这个不是你账号的密码,而是QQ邮箱pop/stmp的授权码
default-encoding: UTF-8
port: 465
protocol: smtps # 这个必须特殊声明为smtp,不然会报异常
3.2 发送纯文本内容的邮件
@Service
@Slf4j
public class EmailServiceImpl{
@Autowired
private JavaMailSender mailSender;
@Override
public void sendSimpleEmail(EmailDto emailDto) { //在emailDto类中封装验证码信息
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);//设置发件人
message.setTo(emailDto.getTo());//设置收件人
message.setSubject(emailDto.getSubject());//设置邮件的主题(标题)
message.setText(emailDto.getContent());//设置邮件的内容
try {
mailSender.send(message);
log.info("简单邮件已经发送。");
} catch (Exception e) {
log.info("简单邮件发送失败",e);
}
}
}
这里说明一点:
JavaMailSender这个类是发送邮件的功能类由它来实现发送邮件的操作
SimpleMailMessage这个类是构建了邮件的内容,比如收件人标题啥的
效果图如下:
3.3 发送html格式的邮件
3.3.1 引入对应的pom坐标
org.springframework.boot spring-boot-starter-thymeleaf
3.3.2 邮件模板
邮箱验证码
|
(工作人员不会向你索取此验证码,请勿泄漏!) 此为系统邮件,请勿回复 ——xxx平台 |
3.3.3 设计实现类
@Override
public void sendHtmlEmail(EmailDto emailDto) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setSubject("xxx验证码"); // 邮件的标题
helper.setFrom("xxxx@qq.com"); // 发送者
helper.setTo("xxxx@qq.com"); // 接受者
helper.setSentDate(new Date()); //时间
// 这里引入的是Template的Context
Context context = new Context();
//设置模板中的变量
context.setVariable("verifyCode", Arrays.asList("1234".split("")));
// 第一个参数为模板的名称
String process = templateEngine.process("email.html", context); //这里不用写全路径
// 第二个参数true表示这是一个html文本
helper.setText(process,true);
mailSender.send(mimeMessage);
}
注意的几个点:
1. templateEngine.process()这里不要写全路径名,不然会找不到文件
2. html文件注意头部分,不然可能参数无法替换
效果图如下:
字符串可以随意替换
相关api的用法可以参考:JavaMail API的使用,一看就会的那种_独泪了无痕的博客-CSDN博客



