前言
在實際項目中,經常需要用到郵件通知功能。比如,用戶通過郵件注冊,通過郵件找回密碼等;又比如通過郵件發送系統情況,通過郵件發送報表信息等等,實際應用場景很多。這篇文章,就教大家通過springboot快速的實現一個發送郵件的功能。
開啟smtp
這里以QQ郵箱為例。登錄QQ郵箱之后,點擊設置,點擊賬戶。如下圖:

點擊開啟IMAP/SMTP服務。

記下QQ郵箱提示的授權碼:

這個授權碼,就是發送郵件時需要的密碼。
以上步驟完成之后,就可以開始開發了。
引入依賴
在springboot項目中,引入如下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
在springboot項目中引入依賴之后,即可在其配置文件中配置郵箱的參數:
application.properties
spring.mail.host=smtp.qq.com
spring.mail.username=happyjava@foxmail.com
spring.mail.password=xxxxxxxx
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
因為是QQ郵箱,所以host需要使用smtp.qq.com。如果是其它郵箱,搜索下即可找到。
username為郵箱賬號,password為上面步驟中提到的授權碼。
注入JavaMailSender實例
郵箱參數配置完之后,即可直接注入JavaMailSender實例。
@Autowired
private JavaMailSender javaMailSender;
發送普通郵件
普通郵件,沒有樣式。實現起來最容易:
@Test
public void testSend() throws MessagingException {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("happyjava@foxmail.com");
message.setTo("1015030682@qq.com");
message.setSubject("這是標題");
message.setText("這是內容");
javaMailSender.send(message);
}
From需要和配置文件中的username一致,否則會報錯。
To為郵件接收者;
Subject為郵件的標題;
Text為郵件的內容。
運行方法,即可收到郵件:

發送HTML郵件
很多時候,我們需要郵件帶有美觀的樣式。這時候,可以使用HTML的樣式。我們需要使用javaMailSender的createMimeMessage方法,構建一個MimeMessage,然后使用MimeMessage實例創建出MimeMessageHelper。如下:
@Test
public void testSend() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
messageHelper.setSubject("標題");
messageHelper.setFrom("happyjava@foxmail.com");
messageHelper.setTo("1015030682@qq.com");
messageHelper.setText("<h1>標題</h1><br/><p>這是內容</p>", true);
javaMailSender.send(messageHelper.getMimeMessage());
}
這里需要注意的是,setText的時候需要傳一個布爾值進去,表名需要使用HTML樣式。
運行方法查看結果:

可以看到,h1的樣式已經出來了。
總結
本文講解了如何在springboot中快速的發郵件。介紹了兩種發送郵件的方式:1、普通模式;2、HTML模式。其實還支持多種豐富的模式,比如模板引擎等,這里就不講解了,其實使用起來大同小異。
