javascript
java 邮件模板_Spring Boot 2发送邮件手把手图文教程
點擊上方?IT牧場?,選擇?置頂或者星標技術干貨每日送達!
本文基于:Spring?Boot?2.1.3,理論支持Spring?Boot?2.x所有版本。
最近有童鞋問到筆者如何用Spring?Boot發送郵件,故而整理下Spring?Boot發送郵件的各種姿勢。
說到郵件放松,相信大家對Spring Framework提供的接口?JavaMailSender?都不陌生。那么Spring?Boot是否有開箱即用的郵件發送呢?
答案是肯定的。Spring?Boot為發送郵件提供了starter:spring-boot-starter-mail?。
本文詳細探討如何用Spring?Boot發送郵件。
一、郵箱配置
以126郵箱為例:
1 開啟SMTP服務
2 設置/重置客戶端授權密碼
二、編碼
2.1 準備工作
1 加依賴
org.springframework.boot spring-boot-starter-mail2 寫配置
spring:??mail:????host:?smtp.126.com????username:?eacdy0000@126.com????password:?上面設置的授權碼2.2 發送簡單郵件
public String simple() { SimpleMailMessage message = new SimpleMailMessage(); // 發件人郵箱 message.setFrom(this.mailProperties.getUsername()); // 收信人郵箱 message.setTo("511932633@qq.com"); // 郵件主題 message.setSubject("簡單郵件測試"); // 郵件內容 message.setText("簡單郵件測試"); this.javaMailSender.send(message); return "success";}結果類似下圖:
2.3 發送HTML郵件
簡單郵件是沒有樣式的,很多時候,我們希望發送的郵件內容帶有樣式,此時可發送HTML郵件。
public String html() throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(message); messageHelper.setFrom(this.mailProperties.getUsername()); messageHelper.setTo("511932633@qq.com"); messageHelper.setSubject("HTML內容郵件測試"); // 第二個參數表示是否html,設為true messageHelper.setText("HTML內容..
", true); this.javaMailSender.send(message); return "success";}結果類似下圖:
2.4 發送帶附件的郵件
很多場景下,需要為郵件插入附件,此時該怎么辦呢?繼續上代碼——
@GetMapping("/attach")public String attach() throws MessagingException { MimeMessage message = this.javaMailSender.createMimeMessage(); // 第二個參數表示是否開啟multipart模式 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true); messageHelper.setFrom(this.mailProperties.getUsername()); messageHelper.setTo("511932633@qq.com"); messageHelper.setSubject("帶附件的郵件測試"); // 第二個參數表示是否html,設為true messageHelper.setText("HTML內容..
", true); messageHelper.addAttachment("附件名稱", new ClassPathResource("wx.jpg")); this.javaMailSender.send(message); return "success";}結果類似下圖:
2.5 發送帶內聯附件的郵件
附件?+?HTML基本能滿足日常工作中多數需求。但如果能將附件內聯在郵件內容中,那么體驗就更好啦!如何實現附件的內聯呢?
@GetMapping("/inline-attach")public String inlineAttach() throws MessagingException { MimeMessage message = this.javaMailSender.createMimeMessage(); // 第二個參數表示是否開啟multipart模式 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true); messageHelper.setFrom(this.mailProperties.getUsername()); messageHelper.setTo("511932633@qq.com"); messageHelper.setSubject("內聯附件的郵件測試"); // 第二個參數表示是否html,設為true????messageHelper.setText("HTML內容..
",?true); messageHelper.addInline("attach", new ClassPathResource("wx.jpg")); this.javaMailSender.send(message); return "success";}由代碼可知,只需在想要內聯的地方使用?cid:xx?引用內聯附件,然后用?addInline(xx, file)指定附件即可。兩處的?xx?必須一致。
結果類似下圖:
2.6 發送基于Freemarker模板的郵件
上面的例子中,郵件內容是直接以字符串體現的,這通常不適合生產,因為實際項目中郵件往往帶有變量。此時,可考慮使用Freemarker模板(或者其他模板,Spring?Boot?2.x默認支持Freemarker、Groovy、Thymeleaf、Mustache四種模板引擎,也可根據需求使用其他模板引擎)。
?
創建Freemarker模板文件mail.ftl,并將其存放在resources/templates/?目錄中
親愛的${username}, 歡迎關注${event}
?
編碼:
@GetMapping("/freemarker")public String freemarker() throws MessagingException, IOException, TemplateException { MimeMessage message = this.javaMailSender.createMimeMessage(); // 第二個參數表示是否開啟multipart模式 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true); messageHelper.setFrom(this.mailProperties.getUsername()); messageHelper.setTo("511932633@qq.com"); messageHelper.setSubject("基于freemarker模板的郵件測試"); Map model = new HashMap<>(); model.put("username", "itmuch"); model.put("event", "IT牧場大事件"); String content = FreeMarkerTemplateUtils.processTemplateIntoString( this.freemarkerConfiguration.getTemplate("mail.ftl"), model); // 第二個參數表示是否html,設為true messageHelper.setText(content, true); this.javaMailSender.send(message); return "success";}此時,結果類似下圖:
三、配套代碼
?GitHub[1]?Gitee[2]
干貨分享
最近將個人學習筆記整理成冊,使用PDF分享。關注我,回復如下代碼,即可獲得百度盤地址,無套路領取!
?001:《Java并發與高并發解決方案》學習筆記;?002:《深入JVM內核——原理、診斷與優化》學習筆記;?003:《Java面試寶典》?004:《Docker開源書》?005:《Kubernetes開源書》?006:《DDD速成(領域驅動設計速成)》
近期熱文
?面試官問我,SpringApplication.run做了哪些事??分享:個人是怎么學習新知識的?MySQL數據庫“十宗罪”(十大經典錯誤案例)?干貨|Spring Cloud Stream 體系及原理介紹?Spring Cloud Alibaba系列教程-03-搭建生產可用的Nacos集群?我最喜歡的Mybatis?3.5新特性!超實用!
關注我
References
[1]?GitHub:?https://github.com/eacdy/spring-boot-study/tree/master/spring-boot-mail[2]?Gitee:?https://gitee.com/itmuch/spring-boot-study/tree/master/spring-boot-mail
點"在看"是一種美德^_^
總結
以上是生活随笔為你收集整理的java 邮件模板_Spring Boot 2发送邮件手把手图文教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交行信用卡以卡办卡需要什么条件 额度是多
- 下一篇: 信用卡自动还款怎么样 有风险吗