SpringBoot使用FreeMarker模板发送邮件

网友投稿 441 2023-01-08


SpringBoot使用FreeMarker模板发送邮件

本文实例为大家分享了SpringBoot +Mail+FreeMarker发送邮件,供大家参考,具体内容如下

通过spirngboot 自带的mail服务及FreeMarker模板引擎,发送邮

添加依赖

org.springframework.boot

spring-boot-starter-freemarker

org.springframework.boot

spring-boot-starter-mail

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

true

在application.yml文件中配置Mail信息

spring:

mail:

port: 25

username: ${username}

password: ${password}

protocol: smtp

default-encoding: utf-8

host: ${host}

编写MailService服务

@Service

public class MailServiceImpl implements MailService {

//邮件的发送者

@Value("${spring.mail.username}")

private String from;

//注入MailSender

@Autowired

private javaMailSender mailSender;

//发送邮件的模板引擎

@Autowired

private FreeMarkerConfigurer configurer;

/**

* @param params 发送邮件的主题对象 object

* @param title 邮件标题

* @param templateName 模板名称

*/

@Override

public void sendMessageMail(Object params, String title, String templateName) {

try {

MimeMessage mimeMessage = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);

helper.setFrom(from);

helper.setTo(InternetAddress.parse("xxxxx@163.com"));//发送给谁

helper.setSubject("【" + title + "-" + LocalDate.now() + " " + LocalTime.now().withNano(0) + "】");//邮件标题

Map model = new HashMap<>();

model.put("params", params);

try {

Template template = configurer.getConfiguration().getTemplate(templateName);

try {

String text = FreeMarkerTemplateUtils.prhttp://ocessTemplateIntoString(template, model);

helper.setText(text, true);

mailSender.send(mimeMessage);

} catch (TemplateException e) {

e.printStackTrace();

}

} catch (IOException e) {

e.printStackTrace();

}

} catch (MessagingException e) {

e.printStackTrace();

}

}

}

定义发送邮件对象

发送内容为object,我这里演示一个对象,通过模板渲染方式接收内容

@Data

public class Message {

private String messageCode;

private String messageStatus;

private String cause;

}

在项目templates目录新建个message.ftl文件

测试邮件发送

新建controller类

@RestController

public class MailController {

@Autowired

private MailService mailService;

@RequestMapping(value = "/sendMessage", method = RequestMethod.GET)

public void sendMailMessage() {

Message message = new Message();

message.setMessageCode("MissingParameter");

message.setMessageStatus("Failed");

message.setCause("缺少参数,请确认");

mailService.sendMessageMail(message, "测试消息通知", "message.ftl");

}

}

启动服务访问 http://localhost:8080/sendMessage

查看邮箱

源码地址


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:自动接口测试框架(自动测试及接口技术)
下一篇:java数据库唯一id生成工具类
相关文章

 发表评论

暂时没有评论,来抢沙发吧~