SpringBoot如何使用FreeMarker模块引擎发送邮件?
不懂SpringBoot如何使用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) + "】");//邮件标题 Mapmodel = new HashMap<>(); model.put("params", params); try { Template template = configurer.getConfiguration().getTemplate(templateName); try { String text = FreeMarkerTemplateUtils.processTemplateIntoString(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文件
消息通知 邮件消息通知
MessageCode MessageStatus Cause ${(params.messageCode)!""} ${(params.messageStatus)!""} ${(params.cause)!""}
测试邮件发送
新建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
查看邮箱
感谢你能够认真阅读完这篇文章,希望小编分享SpringBoot如何使用FreeMarker模块引擎发送邮件?内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!
文章名称:SpringBoot如何使用FreeMarker模块引擎发送邮件?
转载来于:http://scyanting.com/article/pgijio.html