SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能
說明:郵件發(fā)送是一個(gè)很普遍的功能,springboot整合了相關(guān)的starter,以下方式可以實(shí)現(xiàn)一個(gè)簡單的郵件發(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è)置->賬號(hào)->賬號(hào)安全)
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() { // 郵件標(biāo)題 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() { // 郵件標(biāo)題 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ā)送多個(gè)附件, 只需要添加多個(gè) helper.addAttachment() 即可 helper.addAttachment(fileName, pdfFile); mailSender.send(message); } catch (MessagingException e) { throw new RuntimeException(e); } } /** * 擴(kuò)展: 不使用yml文件, 使用對象的方式設(shè)置屬性值 */ @Test void testSendFileNoYml() { // 郵件標(biāo)題 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ā)送多個(gè)附件, 只需要添加多個(gè) 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è)置端口(默認(rèn)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實(shí)現(xiàn)郵件發(fā)送功能的文章就介紹到這了,更多相關(guān)SpringBoot整合Javamail郵件發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring依賴注入成功但在調(diào)用接口的時(shí)候拿到的依賴卻是null問題
這篇文章主要介紹了spring依賴注入成功但在調(diào)用接口的時(shí)候拿到的依賴卻是null問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12利用Redis實(shí)現(xiàn)延時(shí)處理的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于利用Redis實(shí)現(xiàn)延時(shí)處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03idea導(dǎo)入項(xiàng)目不顯示maven側(cè)邊欄的問題及解決方法
這篇文章主要介紹了idea導(dǎo)入項(xiàng)目不顯示maven側(cè)邊欄的問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07詳解Spring/Spring boot異步任務(wù)編程WebAsyncTask
這篇文章主要介紹了詳解Spring/Spring boot異步任務(wù)編程WebAsyncTask,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06Spring Security賬戶與密碼驗(yàn)證實(shí)現(xiàn)過程
這篇文章主要介紹了Spring Security賬戶與密碼驗(yàn)證實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-03-03Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能實(shí)例代碼
在這里,我們使用servlet來實(shí)現(xiàn)隨機(jī)驗(yàn)證碼的實(shí)現(xiàn),有需要的朋友可以參考一下2013-08-08Java8實(shí)現(xiàn)FTP及SFTP文件上傳下載
這篇文章主要介紹了Java8實(shí)現(xiàn)FTP及SFTP文件上傳下載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Springboot+WebSocket實(shí)現(xiàn)一對一聊天和公告的示例代碼
這篇文章主要介紹了Springboot+WebSocket實(shí)現(xiàn)一對一聊天和公告的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04