SpringBoot | 第二十六章:邮件发送 (3)

mail.ftl

<html> <body> <div> 尊敬的${userName}: </div> <div > &nbsp; &nbsp;您好! </div> <div > &nbsp; &nbsp;多谢关注公众号:一枚趔趄的猿(ledevOps),分享程序猿日常,不定期发布关于SpringBoot、SpringCloud、Java及其他相关教程,记录工作中碰到的问题。欢迎关注~ </div> <div > &nbsp; &nbsp;一起学习,共同进步! </div> <div > <img src="http://www.likecs.com/cid:winxinQr"> </div> </body> </html>

3.编写具体实现类:

//自动注入 @Autowired freemarker.template.Configuration freemarkerConfig; @GetMapping("/template") public String template(String userName) throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("499452441@qq.com"); helper.setTo("499452441@qq.com"); helper.setSubject("主题:" + userName + ",你有一封来自oKong邮件(From模版)"); //设置替换的参数对象 Map<String, Object> model = new HashMap<String, Object>(); model.put("userName", StringUtils.isEmpty(userName) ? "oKong" : userName); String templateString = FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerConfig.getTemplate("mail.ftl"), model); helper.setText(templateString,true); //抄送人 // helper.setCc(""); //密送人 // helper.setBcc(""); //添加附件 File qrCode = new File("wxgzh8cm.jpg"); //建议文件带上后缀,可支持在线预览 helper.addAttachment("公众号二维码.jpg", qrCode); helper.addInline("winxinQr", qrCode); mailSender.send(mimeMessage); return "模版文件发送成功!"; }

这里说明下:

使用FreeMarker模版时,可直接使用Spring提供的工具类FreeMarkerTemplateUtils的processTemplateIntoString方法进行模版文件的替换。而freemarker.template.Template类,熟悉FreeMarker的同学应该知道,可以直接从配置类freemarker.template.Configuration中获取,此类直接注入即可,SpringBoot在启动时,已经注入这个bean了。具体的自动配置可查看:org.springframework.boot.autoconfigure.freemarker类。

freemarker自动配置

关于一些Freemarker的语法这里就不说明了,大家可到官网查看下:https://freemarker.apache.org/docs/index.html或者,中文参考(可能版本不是最新):

启动后,一切正常情况下可以看见如下:邮件内容已被替换了:

模版邮件

参考资料

https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/htmlsingle/#mail

https://docs.spring.io/spring-boot/docs/1.5.15.RELEASE/reference/htmlsingle/#boot-features-email

https://blog.csdn.net/a2241076850/article/details/52856863

总结

本注解主要简单的讲解了如何利用JavaMailSender发送各类格式的邮件。这里只是演示了以qq邮箱作为发送方,使用其他邮箱时,可能会进行相应的配置调整,具体看各邮件系统的要求了。一般上各邮箱系统都会有相应的说明的。使用JavaMailSender发送邮件时,使用是很简单的,只需要调用相应的api方法即可。想了解底层如何实现的同学,建议搜索下相关JavaMail的知识,加深印象。

最后

目前互联网上很多大佬都有SpringBoot系列教程,如有雷同,请多多包涵了。原创不易,码字不易,还希望大家多多支持。若文中有所错误之处,还望提出,谢谢。

老生常谈

个人QQ:499452441

微信公众号:lqdevOps

公众号

个人博客:

完整示例:https://github.com/xie19900123/spring-boot-learning/tree/master/chapter-26

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydgxx.html