SpringBoot使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件
用了這么久的Spring Boot,我們對(duì)Spring Boot的了解應(yīng)該也逐步進(jìn)入正軌了,這篇文章講的案例也在我們的實(shí)際開(kāi)發(fā)中算是比較實(shí)用的了,畢竟我們完成注冊(cè)功能和對(duì)用戶(hù)群發(fā)消息,都可以采用到郵箱發(fā)送功能,往下看,我們來(lái)看看什么是JavaMailSender。
什么是JavaMailSender
JavaMailSender
是Spring Framework
中的一個(gè)接口,用于發(fā)送電子郵件。它是Spring
對(duì)JavaMail API
的封裝,提供了更簡(jiǎn)單和更方便的方式來(lái)發(fā)送郵件。
JavaMailSender
接口定義了一組發(fā)送郵件的方法,包括發(fā)送簡(jiǎn)單文本郵件、發(fā)送帶附件的郵件、發(fā)送HTML
格式的郵件等。它隱藏了底層JavaMail API
的復(fù)雜性,使得在Spring
應(yīng)用中發(fā)送郵件變得更加容易。
在Spring Boot
中,你可以通過(guò)依賴(lài)注入JavaMailSender
來(lái)使用它。通過(guò)配置郵件服務(wù)器的相關(guān)信息,你可以使用JavaMailSender
發(fā)送郵件。
JavaMailSender
接口的常用實(shí)現(xiàn)類(lèi)是JavaMailSenderImpl
,它是基于JavaMail API
實(shí)現(xiàn)的。除了JavaMailSenderImpl
,Spring
還提供了其他的實(shí)現(xiàn)類(lèi),例如MockMailSender
用于測(cè)試目的。
使用JavaMailSender
,你可以方便地發(fā)送郵件,設(shè)置收件人、發(fā)件人、主題、正文等信息,并可以附加文件、設(shè)置抄送、密送等功能。
JavaMailSender是Spring Framework中用于發(fā)送郵件的接口,它簡(jiǎn)化了郵件發(fā)送的過(guò)程,提供了更高級(jí)的抽象和便利性。
來(lái)看一個(gè)案例:
引入依賴(lài):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-velocity</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
如其他自動(dòng)化配置一樣,我們?cè)谝胂嚓P(guān)依賴(lài)后就需要在application.properties文件中進(jìn)行配置:
spring.mail.host=your-smtp-host spring.mail.port=your-smtp-port spring.mail.username=your-username spring.mail.password=your-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true
請(qǐng)將your-smtp-host、your-smtp-port、your-username和your-password替換為你的實(shí)際信息。
然后,在你的代碼中,注入JavaMailSender并使用它來(lái)發(fā)送郵件。以下是一個(gè)簡(jiǎn)單的示例:
例如我們采用qq郵箱:
spring.mail.host=smtp.qq.com spring.mail.username=用戶(hù)名 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
這里的密碼指你獲取的郵箱的授權(quán)碼
在這里獲取你的相關(guān)信息,
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
template.vm
<html> <body> <h3>你好, ${username}, 這是一封模版引擎封裝的郵箱信!</h3> </body> </html>
之后咱們創(chuàng)建一個(gè)測(cè)試類(lèi)進(jìn)行:
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) public class ApplicationTests { @Autowired private JavaMailSender mailSender; @Autowired private VelocityEngine velocityEngine; //簡(jiǎn)單的郵件發(fā)送 @Test public void sendSimpleMail() throws Exception { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("28****70@qq.com"); message.setTo("28****70@qq.com"); message.setSubject("主題:簡(jiǎn)單郵件"); message.setText("簡(jiǎn)單的郵件內(nèi)容"); mailSender.send(message); } //攜帶附件的郵件 @Test public void sendAttachmentsMail() throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("28****70@qq.com"); helper.setTo("28****70@qq.com"); helper.setSubject("主題:有附件"); helper.setText("內(nèi)容:有附件的郵件"); FileSystemResource file = new FileSystemResource(new File("weixin.jpg")); helper.addAttachment("miaow-1.jpg", file); helper.addAttachment("miaow-2.jpg", file); helper.addAttachment("miaow-2.jpg", file); mailSender.send(mimeMessage); } //發(fā)送嵌入靜態(tài)資源 @Test public void sendInlineMail() throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("28****70@qq.com"); helper.setTo("28****70@qq.com"); helper.setSubject("主題:嵌入靜態(tài)資源"); 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); } //發(fā)送模版附件 @Test public void sendTemplateMail() throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("28****70@qq.com"); helper.setTo("28****70@qq.com"); helper.setSubject("主題:模板郵件"); Map<String, Object> model = new HashedMap(); model.put("username", "miaow"); String text = VelocityEngineUtils.mergeTemplateIntoString( velocityEngine, "template.vm", "UTF-8", model); helper.setText(text, true); mailSender.send(mimeMessage); } }
在項(xiàng)目下放置:weixin.jpg圖片,圖片隨便你怎么玩
這樣,你就可以在Spring Boot中使用JavaMailSender發(fā)送郵件了。記得替換示例代碼中的實(shí)際信息,以便與你的郵件服務(wù)器配置相匹配。
在使用JavaMailSender發(fā)送郵件時(shí),有一些注意事項(xiàng)需要注意:
郵件服務(wù)器的配置
在使用JavaMailSender發(fā)送郵件之前,你需要配置郵件服務(wù)器的相關(guān)信息,包括SMTP服務(wù)器地址、端口號(hào)、用戶(hù)名、密碼等。這些信息可以通過(guò)在配置文件中添加相關(guān)屬性來(lái)實(shí)現(xiàn)。
郵件內(nèi)容的設(shè)置
在設(shè)置郵件內(nèi)容時(shí),你需要注意郵件的主題、正文、收件人、發(fā)件人等信息的設(shè)置。如果你需要發(fā)送HTML格式的郵件,需要將郵件內(nèi)容設(shè)置為HTML格式,并設(shè)置相應(yīng)的郵件頭信息。
郵件發(fā)送的異常處理
在發(fā)送郵件時(shí),可能會(huì)出現(xiàn)各種異常,例如連接超時(shí)、認(rèn)證失敗等。你需要對(duì)這些異常進(jìn)行處理,以便及時(shí)發(fā)現(xiàn)和解決問(wèn)題。
郵件發(fā)送的性能問(wèn)題
在發(fā)送大量郵件時(shí),可能會(huì)出現(xiàn)性能問(wèn)題。你需要注意郵件發(fā)送的頻率和數(shù)量,以避免對(duì)郵件服務(wù)器造成過(guò)大的負(fù)載。
郵件發(fā)送的安全問(wèn)題
在發(fā)送郵件時(shí),需要注意郵件的安全性。你需要確保郵件內(nèi)容不包含敏感信息,并且郵件服務(wù)器的認(rèn)證和加密設(shè)置是正確的。
總之,在使用JavaMailSender發(fā)送郵件時(shí),你需要注意郵件服務(wù)器的配置、郵件內(nèi)容的設(shè)置、異常處理、性能問(wèn)題和安全問(wèn)題等方面,以確保郵件發(fā)送的順利和安全。
以上就是SpringBoot使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot JavaMailSender發(fā)送郵件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一個(gè)簡(jiǎn)單JDK版動(dòng)態(tài)代理
這篇文章主要為大家詳細(xì)介紹了一個(gè)簡(jiǎn)單JDK版動(dòng)態(tài)代理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09Spring Boot兩種配置文件properties和yml區(qū)別
這篇文章主要為大家介紹了java面試中常見(jiàn)問(wèn)到的Spring Boot兩種配置文件properties和yml區(qū)別解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07SpringBoot配置文件方式,在線yml文件轉(zhuǎn)properties
這篇文章主要介紹了SpringBoot配置文件方式,在線yml文件轉(zhuǎn)properties,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Struts2 Result 返回JSON對(duì)象詳解
這篇文章主要講解Struts2返回JSON對(duì)象的兩種方式,講的比較詳細(xì),希望能給大家做一個(gè)參考。2016-06-06