SpringBoot?JavaMailSender發(fā)送郵件功能(實例詳解)

JavaMailSender是什么
JavaMailSender是Spring提供的,非常好用的,實現(xiàn)郵件發(fā)送的接口
在Spring Boot的Starter模塊中也為此提供了自動化配置,支持發(fā)送郵件
JavaMailSenderImpl是spring封裝的郵件發(fā)送封裝類,支持普通文本、附件、html。
發(fā)送簡單郵件
簡單郵件就是指郵件內(nèi)容是一個普通的文本文檔
public class MailTest {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
@Test
public void sendSimpleMail() {
SimpleMailMessage message = new SimpleMailMessage(); // 構(gòu)建一個郵件對象
message.setSubject("郵件主題:這是一封測試郵件"); // 設(shè)置郵件主題
message.setFrom("xxx@qq.com"); // 設(shè)置郵件發(fā)送者
message.setTo("xxx@xx.cn"); // 設(shè)置郵件接收者,可以有多個接收者
// message.setCc("xx@xx.cn"); // 設(shè)置郵件抄送人,可以有多個抄送人
// message.setBcc("xx@xx.cn"); // 設(shè)置隱秘抄送人,可以有多個
message.setSentDate(new Date()); // 設(shè)置郵件發(fā)送日期
String mailMsg = "這是由Springboot發(fā)送的第一封簡單測試郵件,發(fā)件人:xx-哈哈";
message.setText(mailMsg); // 設(shè)置郵件的正文
javaMailSender.send(message); // 發(fā)送郵件
}發(fā)送帶附件的郵件
圖片、普通文件,都是支持的
@Test
public void sendAttachFileMail() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("郵件主題:這是一封測試帶附件的郵件");
helper.setFrom("xx@qq.com");
helper.setTo("xx@qq.com");
// helper.setCc("xx@xx.cn");
// helper.setBcc("xx@xx.cn");
helper.setSentDate(new Date());
helper.setText("這是由Springboot發(fā)送的第二封帶附件的郵件,發(fā)件人:x-哈哈");
File file = new File("/Users/xx/朱x/朱x.jpg");
helper.addAttachment("xx.jpg", file);
javaMailSender.send(mimeMessage);
}發(fā)送帶圖片資源的郵件
圖片資源和附件有什么區(qū)別呢?圖片資源是放在郵件正文中的,即一打開郵件,就能看到圖片。但是一般來說,不建議使用這種方式,一些公司會對郵件內(nèi)容的大小有限制(因為這種方式是將圖片一起發(fā)送的)。
@Test
public void sendImgResMail() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("郵件主題:這是一封測試帶圖片資源的郵件");
helper.setFrom("xx@qq.com");
helper.setTo("xx@qq.com");
helper.setSentDate(new Date());
helper.setText("<p>hello 大家好,這是一封測試郵件,這封郵件包含兩種圖片,分別如下</p><p>第一張圖片:</p><img src='cid:p01'/><p>第二張圖片:</p><img src='cid:p02'/>", true);
helper.addInline("p01", new FileSystemResource(new File("/Users/xx/朱x/xx.jpg")));
helper.addInline("p02", new FileSystemResource(new File("/Users/zhupeng/xx/WechatIMG47.jpg")));
javaMailSender.send(mimeMessage);
}使用 Freemarker 作郵件模板
在公司實際開發(fā)中,第一種和第三種都不是使用最多的郵件發(fā)送方案。因為正常來說,郵件的內(nèi)容都是比較的豐富的,所以大部分郵件都是通過 HTML 來呈現(xiàn)的,
如果直接拼接 HTML 字符串,這樣以后不好維護,為了解決這個問題,一般郵件發(fā)送,都會有相應(yīng)的郵件模板。
最具代表性的兩個模板就是 Freemarker 模板和 Thyemeleaf 模板了
@Test
public void sendFreemarkerMail() throws MessagingException, IOException, TemplateException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("郵件主題:這是一封Freemarker渲染的郵件");
helper.setFrom("xx@qq.com");
helper.setTo("xx@qq.com");
helper.setSentDate(new Date());
// 構(gòu)建 Freemarker 的基本配置
Configuration configuration = new Configuration(Configuration.VERSION_2_3_0);
configuration.setClassLoaderForTemplateLoading(MailTest.class.getClassLoader(), "templates");
Template template = configuration.getTemplate("mail_freemarker.ftl");
// 模板渲染,渲染的結(jié)果將被保存到 out 中 ,將out 中的 html 字符串發(fā)送即可
StringWriter out = new StringWriter();
template.process(new User(1001, "xx", 10000.00), out);
helper.setText(out.toString(), true);
javaMailSender.send(mimeMessage);
}使用 Thymeleaf 作郵件模板,帶附件+圖片
public void sendThymeleafMail() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("郵件主題:這是一封Thymeleaf渲染的郵件");
helper.setFrom("xx@qq.com");
helper.setTo("xx@qq.com");
helper.setSentDate(new Date());
File file = new File("/Users/xx/xx/xx.jpg");
helper.addAttachment("xx.jpg", file);
helper.setText("<p>hello 大家好,這是一封測試郵件,這封郵件包含一種圖片,如下</p><p>第一張圖片:</p><img src='cid:p01'/>", true);
helper.addInline("p01", new FileSystemResource(new File("/Users/xx/朱x/朱x.jpg")));
Context context = new Context();
context.setVariable("userName", "朱xx");
context.setVariable("num", "000001");
context.setVariable("salary", "99999");
String process = templateEngine.process("mail_thymeleaf.html", context);
helper.setText(process, true);
javaMailSender.send(mimeMessage);
}到此這篇關(guān)于SpringBoot JavaMailSender發(fā)送郵件功能的文章就介紹到這了,更多相關(guān)SpringBoot JavaMailSender發(fā)送郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Kotlin 基礎(chǔ)教程之注解與java中的注解比較
這篇文章主要介紹了Kotlin 基礎(chǔ)教程之注解與java中的注解比較的相關(guān)資料,需要的朋友可以參考下2017-06-06
淺談SpringCloud的微服務(wù)架構(gòu)組件
這篇文章主要介紹了淺談SpringCloud的微服務(wù)架構(gòu)組件,Spring Cloud根據(jù)分布式服務(wù)協(xié)調(diào)治理的需求成立了許多子項目,每個項目通過特定的組件去實現(xiàn),需要的朋友可以參考下2023-04-04
Java中的構(gòu)造方法(構(gòu)造函數(shù))與普通方法區(qū)別及說明
這篇文章主要介紹了Java中的構(gòu)造方法(構(gòu)造函數(shù))與普通方法區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
JAVA生成八位不重復(fù)隨機數(shù)最快的方法總結(jié)(省時間省空間)
隨機數(shù)在實際中使用很廣泛,比如要隨即生成一個固定長度的字符串、數(shù)字,這篇文章主要給大家介紹了關(guān)于JAVA生成八位不重復(fù)隨機數(shù)最快的方法,文中介紹的方法省時間省空間,需要的朋友可以參考下2024-03-03
在Android中使用WebView在線查看PDF文件的方法示例
在Android應(yīng)用開發(fā)中,有時我們需要在客戶端展示PDF文件,以便用戶可以閱讀或交互,這篇文章主要介紹了在Android中使用WebView在線查看PDF文件的方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-09-09
java線程之用Thread類創(chuàng)建線程的方法
本篇文章介紹了,Thread類創(chuàng)建線程的方法。需要的朋友參考下2013-05-05

