SpringBoot整合Javamail實現(xiàn)郵件發(fā)送功能
說明:郵件發(fā)送是一個很普遍的功能,springboot整合了相關(guān)的starter,以下方式可以實現(xiàn)一個簡單的郵件發(fā)送功能。
1、引入依賴
- mail依賴,發(fā)送郵件使用
- test依賴,測試使用
<!-- email -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>compile</scope>
</dependency>2、配置yml文件
spring:
mail:
host: smtp.qq.com
port: 25
protocol: smtp
username: 123456789@qq.com
password: oujhlavdjhirgiee
default-encoding: UTF-8注意:password屬性是郵箱授權(quán)碼,用于第三方接口調(diào)用使用, 而不是郵箱登錄密碼,需要登錄郵箱查看或者申請獲取。下面是qq郵箱授權(quán)碼獲取方式(設(shè)置->賬號->賬號安全)

3、編寫測試代碼
這里主要測試了發(fā)送兩種格式的郵件,一種是純文字的郵件,另一種是帶有附件的郵件。
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
@SpringBootTest
class EmailUtilsTest {
// 發(fā)件人郵箱
@Value("${spring.mail.username}")
private String mailFrom;
// 收件人郵箱
private static String MAIL_TO = "zhangsan123@163.com";
// 測試發(fā)送PDF文件的路徑
private static String PDF_PATH = "E:\\test.pdf";
@Autowired
private JavaMailSender mailSender;
/**
* 測試發(fā)送文字內(nèi)容
*/
@Test
void testSendText() {
// 郵件標題
String subject = "測試郵件";
// 郵件文字內(nèi)容
String textContent = "你好,這是測試郵件4";
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(mailFrom);
helper.setTo(MAIL_TO);
helper.setSubject(subject);
helper.setText(textContent, true);
mailSender.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
/**
* 測試發(fā)送文件內(nèi)容
*/
@Test
void testSendFile() {
// 郵件標題
String subject = "一份測試發(fā)送的PDF文件";
// 郵件文本內(nèi)容
String textContent = "這是您的文件,請注意查收";
// 郵件文件內(nèi)容
FileSystemResource pdfFile = new FileSystemResource(PDF_PATH);
// 文件名字
String fileName = "測試文件.pdf";
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(mailFrom);
helper.setTo(MAIL_TO);
helper.setSubject(subject);
helper.setText(textContent, true);
// 如果一次要發(fā)送多個附件, 只需要添加多個 helper.addAttachment() 即可
helper.addAttachment(fileName, pdfFile);
mailSender.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
/**
* 擴展: 不使用yml文件, 使用對象的方式設(shè)置屬性值
*/
@Test
void testSendFileNoYml() {
// 郵件標題
String subject = "一份測試發(fā)送的PDF文件";
// 郵件文本內(nèi)容
String textContent = "這是您的文件,請注意查收";
// 郵件文件內(nèi)容
FileSystemResource pdfFile = new FileSystemResource(PDF_PATH);
// 文件名字
String fileName = "測試文件.pdf";
// 獲取自定義屬性的sender
JavaMailSender javaMailSender = getJavaMailSender();
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(mailFrom);
helper.setTo(MAIL_TO);
helper.setSubject(subject);
helper.setText(textContent, true);
// 如果一次要發(fā)送多個附件, 只需要添加多個 helper.addAttachment() 即可
helper.addAttachment(fileName, pdfFile);
mailSender.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
/**
* 獲取自定義的屬性的 JavaMailSender 對象
* @return JavaMailSender
*/
public JavaMailSender getJavaMailSender(){
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
// 設(shè)置發(fā)送的服務(wù)器ip (qq:smtp.qq.com 網(wǎng)易:smtp.126.com)
javaMailSender.setHost("qq:smtp.qq.com");
javaMailSender.setUsername("1454376161@qq.com");
// 郵箱授權(quán)碼
javaMailSender.setPassword("oujhldvdjhirgiea");
// 設(shè)置端口(默認25, 或者設(shè)置456)
javaMailSender.setPort(465);
// 設(shè)置編碼方式,避免常出現(xiàn)亂碼
javaMailSender.setDefaultEncoding("UTF-8");
//其他屬性
Properties p = new Properties();
p.setProperty("mail.smtp.auth", "true");
p.setProperty("mail.smtp.ssl", "true");
p.setProperty("mail.smtp.socketFactory.port", "465");
p.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
p.setProperty("mail.smtp.starttls.enable", "true");
p.setProperty("mail.smtp.starttls.required", "true");
javaMailSender.setJavaMailProperties(p);
return javaMailSender;
}
}到此這篇關(guān)于SpringBoot整合Javamail實現(xiàn)郵件發(fā)送功能的文章就介紹到這了,更多相關(guān)SpringBoot整合Javamail郵件發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring依賴注入成功但在調(diào)用接口的時候拿到的依賴卻是null問題
這篇文章主要介紹了spring依賴注入成功但在調(diào)用接口的時候拿到的依賴卻是null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
idea導(dǎo)入項目不顯示maven側(cè)邊欄的問題及解決方法
這篇文章主要介紹了idea導(dǎo)入項目不顯示maven側(cè)邊欄的問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
詳解Spring/Spring boot異步任務(wù)編程WebAsyncTask
這篇文章主要介紹了詳解Spring/Spring boot異步任務(wù)編程WebAsyncTask,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Spring Security賬戶與密碼驗證實現(xiàn)過程
這篇文章主要介紹了Spring Security賬戶與密碼驗證實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-03-03
Springboot+WebSocket實現(xiàn)一對一聊天和公告的示例代碼
這篇文章主要介紹了Springboot+WebSocket實現(xiàn)一對一聊天和公告的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04

