mail.ftl
<html> <body> <div> 尊敬的${userName}: </div> <div > 您好! </div> <div > 多谢关注公众号:一枚趔趄的猿(ledevOps),分享程序猿日常,不定期发布关于SpringBoot、SpringCloud、Java及其他相关教程,记录工作中碰到的问题。欢迎关注~ </div> <div > 一起学习,共同进步! </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的语法这里就不说明了,大家可到官网查看下: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