springboot發(fā)送郵件功能的實(shí)現(xiàn)代碼
發(fā)郵件是一個(gè)很常見(jiàn)的功能,在java中實(shí)現(xiàn)需要依靠JavaMailSender這個(gè)接口。在springboot項(xiàng)目中需要引入名為 spring-boot-starter-mail 的依賴(lài),如果對(duì)郵件的格式有要求的話(huà)可以引入可以操作html文件的 spring-boot-starter-thymeleaf 依賴(lài)。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
和其他自動(dòng)化配置模塊一樣,在完成了依賴(lài)引入之后,還需要在application.properties
中配置相應(yīng)的屬性值,否則運(yùn)行方法會(huì)一直報(bào)空指針。
一、新建一個(gè)springboot項(xiàng)目。
1、打開(kāi)idea,點(diǎn)擊左上角工具欄file按鈕 ,新建一個(gè)boot項(xiàng)目
2.點(diǎn)擊next ,選擇默認(rèn)的依賴(lài),常見(jiàn)的有數(shù)據(jù)庫(kù)連接,web等
3、點(diǎn)擊finsh,等待boot項(xiàng)目目錄等生成。此時(shí)的目錄是不全的需要自己新加java以及resources文件夾。右鍵項(xiàng)目選擇
進(jìn)行增加操作。
4、然后打開(kāi)pom文件,引入依賴(lài)。
5、打開(kāi)配置文件,寫(xiě)上對(duì)應(yīng)的參數(shù),
到此項(xiàng)目建成,開(kāi)始寫(xiě)測(cè)試類(lèi)。
二、發(fā)送郵件
1、建一個(gè)util類(lèi),寫(xiě)一個(gè)實(shí)現(xiàn)發(fā)送邏輯的業(yè)務(wù)類(lèi),沒(méi)什么要寫(xiě)工具類(lèi),因?yàn)槲蚁氚l(fā)送郵件的時(shí)候可以實(shí)現(xiàn)種格式,帶附件帶html樣式以及可以異步操作的郵件,尤其異步大家都知道發(fā)郵件是很耗時(shí)的。
2、補(bǔ)一個(gè)異步調(diào)用的寫(xiě)法:
*需要異步的方法加@Async
*需要在啟動(dòng)類(lèi)上加開(kāi)啟異步的方法,@EnableAsync
*注意可能應(yīng)該是因?yàn)閍op代理的緣故,被調(diào)用方法 和 調(diào)用處的代碼都處在同一個(gè)類(lèi)的話(huà),只是相當(dāng)于本類(lèi)調(diào)用,并沒(méi)有使用代理類(lèi) 從而@Async并沒(méi)有產(chǎn)生效果,就是在一個(gè)工具類(lèi)。
3、代碼 :帶有附件的郵件
@Test public void sendAttachmentsMail() { Context context = new Context(); context.setVariable("agencyName", "11"); context.setVariable("busTypeName", "22"); context.setVariable("busAllowance", 33); String emailContent = templateEngine.process("emailTeplate", context); try { emailService.sendAttachmentsMail(new String[]{"xxx.com"}, "測(cè)試提示", emailContent); } catch (Exception e) { e.printStackTrace(); } System.out.println("send mail success!,please wait a few mintens"); }
/** * fujian * @throws Exception */ @Async public void sendAttachmentsMail(String[] to, String subject, String contnet) throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("xxx.com"); helper.setTo(to); helper.setSubject(subject); helper.setText(contnet,true); Path picturePath = Paths.get("E:\\WorkFiles\\testBill", "test.png"); byte[] bytes = Files.readAllBytes(picturePath); helper.addAttachment("附件-1.jpg", picturePath.toFile()); mailSender.send(mimeMessage); }
郵件發(fā)送成功
到此這篇關(guān)于springboot發(fā)送郵件的文章就介紹到這了,更多相關(guān)springboot發(fā)送郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
修改jar包package目錄結(jié)構(gòu)操作方法
這篇文章主要介紹了修改jar包package目錄結(jié)構(gòu)操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07如何在spring boot項(xiàng)目中使用Spring Security的BCryptPasswordE
本文介紹如何在Spring Boot項(xiàng)目中通過(guò)修改pom.xml引入安全依賴(lài),添加配置類(lèi)以解除默認(rèn)的HTTP請(qǐng)求攔截,以及如何創(chuàng)建BCryptPasswordEncoder對(duì)象進(jìn)行密碼的加密和匹配,通過(guò)這些步驟,可以有效地增強(qiáng)應(yīng)用的安全性2023-08-08IntelliJ?IDEA?2024.2?發(fā)布新功能介紹Spring?Data?JPA即時(shí)查詢(xún)、自動(dòng)補(bǔ)全cro
在2024.2?Ultimate版本中,對(duì)?Spring?Data?JPA?的支持做了增強(qiáng),新功能允許您在不運(yùn)行應(yīng)用程序和分析日志文件的情況下查看方法將生成的查詢(xún),下面就來(lái)一起看看這個(gè)版本中推出的幾個(gè)強(qiáng)大新特性2024-08-08SpringBoot自動(dòng)初始化數(shù)據(jù)庫(kù)的方法分享
我們?cè)陧?xiàng)目中應(yīng)該經(jīng)常遇到過(guò)初始化數(shù)據(jù)的場(chǎng)景,特別是項(xiàng)目部署或者交付的時(shí)候,那么有什么方式可以在項(xiàng)目啟動(dòng)的時(shí)候自動(dòng)初始化數(shù)據(jù)庫(kù)呢,下面小編就來(lái)和大家分享幾個(gè)方法吧2023-08-08SpringBoot學(xué)習(xí)篇之@Valid與@Validated的區(qū)別
@Valid是使用Hibernate?validation的時(shí)候使用,@Validated是只用Spring?Validator校驗(yàn)機(jī)制使用,下面這篇文章主要給大家介紹了關(guān)于SpringBoot學(xué)習(xí)篇之@Valid與@Validated區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-11-11RabbitMQ的Direct Exchange模式實(shí)現(xiàn)的消息發(fā)布案例(示例代碼)
本文介紹了RabbitMQ的DirectExchange模式下的消息發(fā)布和消費(fèi)的實(shí)現(xiàn),詳細(xì)說(shuō)明了如何在DirectExchange模式中進(jìn)行消息的發(fā)送和接收,以及消息處理的基本方法,感興趣的朋友跟隨小編一起看看吧2024-09-09Java實(shí)現(xiàn)簡(jiǎn)單的酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07在RabbitMQ中實(shí)現(xiàn)Work queues工作隊(duì)列模式
這篇文章主要介紹了如何在RabbitMQ中實(shí)現(xiàn)Work queues模式,代碼詳細(xì),解釋清晰,可以幫助大家更好理解java,對(duì)這方面感興趣的朋友可以參考下2021-04-04Mybatis-Plus集成Sharding-JDBC與Flyway實(shí)現(xiàn)多租戶(hù)分庫(kù)分表實(shí)戰(zhàn)
這篇文章主要為大家介紹了Mybatis-Plus集成Sharding-JDBC與Flyway實(shí)現(xiàn)多租戶(hù)分庫(kù)分表實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11