Spring Boot中使用JavaMailSender傳送郵件
相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender
介面實現郵件傳送。在Spring
Boot的Starter模組中也為此提供了自動化配置。下面通過例項看看如何在Spring Boot中使用JavaMailSender
傳送郵件。
快速入門
在Spring Boot的工程中的pom.xml
中引入spring-boot-starter-mail
依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
如其他自動化配置模組一樣,在完成了依賴引入之後,只需要在application.properties
中配置相應的屬性內容。
下面我們以QQ郵箱為例,在application.properties
中加入如下配置(注意替換自己的使用者名稱和密碼):
spring.mail.host=smtp.qq.com spring.mail.username=使用者名稱 spring.mail.password=密碼 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true
通過單元測試來實現一封簡單郵件的傳送:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class ApplicationTests {
@Autowired
private JavaMailSender mailSender;
@Test
public void sendSimpleMail() throws Exception {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(" [email protected]");
message.setTo("[email protected]");
message.setSubject("主題:簡單郵件");
message.setText("測試郵件內容");
mailSender.send(message);
}
}
到這裡,一個簡單的郵件傳送就完成了,執行一下該單元測試,看看效果如何?
由於Spring Boot的starter模組提供了自動化配置,所以在引入了
spring-boot-starter-mail
依賴之後,會根據配置檔案中的內容去建立JavaMailSender
例項,因此我們可以直接在需要使用的地方直接@Autowired
來引入郵件傳送物件。
進階使用
在上例中,我們通過使用SimpleMailMessage
實現了簡單的郵件傳送,但是實際使用過程中,我們還可能會帶上附件、或是使用郵件模組等。這個時候我們就需要使用MimeMessage
來設定複雜一些的郵件內容,下面我們就來依次實現一下。
傳送附件
在上面單元測試中加入如下測試用例(通過MimeMessageHelper來發送一封帶有附件的郵件):
@Test
public void sendAttachmentsMail() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom("[email protected]");
helper.setTo("[email protected]");
helper.setSubject("主題:有附件");
helper.setText("有附件的郵件");
FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
helper.addAttachment("附件-1.jpg", file);
helper.addAttachment("附件-2.jpg", file);
mailSender.send(mimeMessage);
}
嵌入靜態資源
除了傳送附件之外,我們在郵件內容中可能希望通過嵌入圖片等靜態資源,讓郵件獲得更好的閱讀體驗,而不是從附件中檢視具體圖片,下面的測試用例演示瞭如何通過MimeMessageHelper
實現在郵件正文中嵌入靜態資源。
@Test
public void sendInlineMail() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom("[email protected]");
helper.setTo("[email protected]");
helper.setSubject("主題:嵌入靜態資源");
helper.setText("<html><body><img src=\"cid:weixin\" ></body></html>", true);
FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
helper.addInline("weixin", file);
mailSender.send(mimeMessage);
}
這裡需要注意的是addInline
函式中資源名稱weixin
需要與正文中cid:weixin
對應起來
模板郵件
通常我們使用郵件傳送服務的時候,都會有一些固定的場景,比如重置密碼、註冊確認等,給每個使用者傳送的內容可能只有小部分是變化的。所以,很多時候我們會使用模板引擎來為各類郵件設定成模板,這樣我們只需要在傳送時去替換變化部分的引數即可。
在Spring Boot中使用模板引擎來實現模板化的郵件傳送也是非常容易的,下面我們以velocity為例實現一下。
引入velocity模組的依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-velocity</artifactId>
</dependency>
在resources/templates/
下,建立一個模板頁面template.vm
:
<html>
<body>
<h3>你好, ${username}, 這是一封模板郵件!</h3>
</body>
</html>
我們之前在Spring Boot中開發Web應用時,提到過在Spring Boot的自動化配置下,模板預設位於resources/templates/
目錄下
最後,我們在單元測試中加入傳送模板郵件的測試用例,具體如下:
@Test
public void sendTemplateMail() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom("[email protected]");
helper.setTo("[email protected]");
helper.setSubject("主題:模板郵件");
Map<String, Object> model = new HashedMap();
model.put("username", "didi");
String text = VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine, "template.vm", "UTF-8", model);
helper.setText(text, true);
mailSender.send(mimeMessage);
}
嘗試執行一下,就可以收到內容為你好,
didi, 這是一封模板郵件!
的郵件。這裡,我們通過傳入username的引數,在郵件內容中替換了模板中的${username}
變數。
------------------------------------------------------------------------------------------------------------------------------
如您覺得文章不錯,對您有所幫助,可以通過“支付寶”或“微信支付”請我喝咖啡。
相關推薦
Spring Boot使用JavaMailSender傳送郵件
http://www.cnblogs.com/wxc-xiaohuang/p/9532631.html https://blog.csdn.net/icannotdebug/article/details/79725297 https://docs.spring.io/spring/docs/4.3.21
spring boot 用javaMail傳送郵件,很多坑
直接傳送總是報錯 554 dt:spm 被163攔截,認為非法,抄送一份給自己就解決了。但是顯示抄送人,很煩。 service層 package com.llong.email.mail; import org.springframework.beans.factory.anno
Spring Boot中引入mail郵件服務
傳送郵件,包括簡單郵件,html郵件,帶附件郵件,內嵌圖片郵件四種類型。 1、配置 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactI
spring自帶JavaMailSender傳送郵件
spring自帶的MailSender類在spring-context-support-xxx.RELEASE.jar檔案中,這裡以4.3.4版本為例。1、新建gradle專案,引入依賴配置。 compile group:"org.springframework",name:
Spring Boot中使用JavaMailSender傳送郵件
相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender介面實現郵件傳送。在Spring Boot的Starter模組中也為此提供了自動化配置。下面通過例項看看如何在Spring Boot中使用JavaMailSender傳送郵件。 快速入門 在Spring
spring-boot實戰【12】:Spring Boot中使用JavaMailSender發送郵件
nts fun rop oci 單元測試 prop 快速入門 cat tid 相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender接口實現郵件發送。在Spring Boot的Starter模塊中也為此提供了自動化配置。下面通過實例
Spring Boot學習(十四)之Spring boot中使用QQ郵箱傳送郵件
相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender介面實現郵件傳送。在Spring Boot的Starter模組中也為此提供了自動化配置。下面通過例項看看如
使用spring的JavaMailSender傳送郵件
步驟: 一:pom.xml <!-- java郵件 --> <dependency> &nb
spring-boot(十)郵件傳送
springboot仍然在狂速發展,才五個多月沒有關注,現在看官網已經到1.5.3.RELEASE版本了。準備慢慢在寫寫springboot相關的文章,本篇文章使用springboot最新版本1.5.3進行開發。 傳送郵件應該是網站的必備功能之一,什麼註冊驗證,忘記密碼或者是給使用者傳送營銷資訊
Spring JavaMailSender傳送郵件
個人選擇的傳送服務伺服器是QQ,所以要進行開啟QQ郵箱的SMTP服務,過程如圖所示: 在賬戶下設定開啟SMTP服務,需記住顯示的STMP密碼,點選“開啟”後發簡訊過去即可開啟 EmailSendTest: import org.junit.Test; im
Spring Boot中使用WebSocket總結(二):向指定使用者傳送WebSocket訊息並處理對方不線上的情況
Spring Boot中使用WebSocket總結(二):向指定使用者傳送WebSocket訊息並處理對方不線上的情況 在上一篇文章(www.zifangsky.cn/1355.html)中我介紹了在Spring專案中使用WebSocket的幾種實現方式。但是,上篇文章中只介紹了服務端採用廣播模式給所有客戶
Spring boot中log4j2配置yml方式併發送郵件
(1) 引包 (注:當排除預設logback日誌時,放spring-boot-starter-web下不能把logback清理乾淨,報Class path contains multiple SLF4J bindings.) <!-- 發郵件 --> <
Spring boot 中使用Jersey框架實現簡訊傳送
1.Jersey框架 Jersey RESTful 框架是開源的RESTful框架, 實現了JAX-RS (JSR 311 & JSR 339)規範。它擴充套件了JAX-RS 參考實現, 提供了更多的特性和工具, 可以進一步地簡化 RESTful se
Spring Boot實戰系列(6)郵件傳送
本篇主要介紹了Spring Boot中郵件傳送,分別講解了簡單的文字郵件、HTML郵件、附件郵件、圖片郵件、模板郵件。 快速導航 新增Maven依賴 配置檔案增加郵箱相關配置 Service、Test專案程式碼構建 五種郵件傳送型別講解 文字郵件 htm
spring JavaMailSender 傳送郵件
配置JavaMailSenderImpl類 ** * @Configuration 表示是配置類 * @ComponentScan("com") 需要掃描的包路徑 * @PropertySource("classpath:mail.properties") 需要載入的
探究Spring Boot中的接收引數問題與客戶端傳送請求傳遞資料
結合此篇參考[Spring框架學習筆記(9)——API介面設計相關知識及具體編碼實現](https://www.cnblogs.com/stars-one/p/12305429.html) 在使用Spring Boot進行接收引數的時候,發現了許多問題,之前一直都很忙,最近才稍微有空研究一下此問題。 網上
spring boot 中訪問 REST 接口
pri clas rest pla oot bject res .get obj RestTemplate restTemplate = new RestTemplate(); Object result = restTemplate.getForObject("http
3.Spring Boot中使用Swagger2構建強大的RESTful API文檔
pack 效果 type 現象 業務邏輯 blank depend imp any 原文:http://www.jianshu.com/p/8033ef83a8ed 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構
spring-boot實戰【07】【轉】:Spring Boot中Web應用的統一異常處理
http integer private fin ima lex clas 友好 ref 我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。Spring Boot提供了一個默認的映射:/error,當處理中拋出異常之後,會轉到該請求中處理,並且該請求有一個全
spring-boot實戰【06】【轉】:Spring Boot中使用Swagger2
des values 產生 service sof div 解決 整合 data 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的