SpringBoot中整合Mail实现发送模板邮件

场景

项目搭建专栏:

实现最简单的带标题以及文本内容的邮件发送:

实现

在上面成功实现发送简单邮件的基础上。

实现发送freemarker等模板文件邮件。

项目中引入模板相关依赖

<!-- springboot整合freemark -->
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
  </dependency>

在src/main/resource下的templates下新建模板文件show.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试</title>
</head>
<body>
 ${username}
</body>
</html>

service中新增方法

void sendTemplateEmail(String sendTo,String title,String show);

实现方法

//发送模板的邮件
 @Override
 public void sendTemplateEmail(String sendTo, String title, String show) {
  MimeMessage message =mailSender.createMimeMessage();
  try {
   
   MimeMessageHelper helper =new MimeMessageHelper(message,true);
   helper.setFrom(emailConfig.getEmailFrom());
   helper.setTo(sendTo);
   
   helper.setSubject(title);
   //封装模板使用的数据
   Map<String, Object> model = new HashMap<>();
   //这里的name要与模板中的一致
   model.put("username", "霸道流氓气质");
   
   //得到模板
   //模板名字与templates中的模板名字一致
   Template template = freeMarkerConfig.getConfiguration().getTemplate(show);
   String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
   
   helper.setText(html,true);
  } catch (Exception e) {
   e.printStackTrace();
  }
  mailSender.send(message);
 }

新建Controller中的方法

将代码中的发送以及要发送的邮箱以及授权码赋值后运行。

效果

打开浏览器访问

等待返回success后

打开邮件

源码下载

经验分享 程序员 微信小程序 职场和发展