Sun公司提供了JavaMail用來實現(xiàn)郵件發(fā)送,但是配置煩瑣,Spring中提供了JavaMailSender用來簡化郵件配置,Spring Boot則提供了MailSenderAutoConfiguration對郵件的發(fā)送做了進(jìn)一步簡化。
v準(zhǔn)備工作
使用郵箱發(fā)送郵件,首先要申請開通POP3/SMTP服務(wù)或者IMAP/SMTP服務(wù)。SMTP全稱為Simple Mail Transfer Protocol,譯作簡單郵件傳輸協(xié)議,它定義了郵件客戶端軟件與SMTP服務(wù)器之間,以及SMTP服務(wù)器與SMTP服務(wù)器之間的通信規(guī)則。
我使用的是QQ郵箱,若你也使用QQ郵箱,可以參考下面截圖。當(dāng)然我也試了其它郵箱,開通方法大同小異。
v架構(gòu)搭建
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
server.port=8300
#郵箱配置
#平臺地址,這里用的是qq郵箱,使用其他郵箱請更換
spring.mail.host=smtp.qq.com
#端口號
spring.mail.port=587
#發(fā)送郵件的郵箱地址:改成自己的郵箱
spring.mail.username=123456@qq.com
#注意這里不是郵件的登錄密碼,是發(fā)送短信后它給你的授權(quán)碼 填寫到這里
spring.mail.password=xxxxxxxxx
#與發(fā)件郵箱一致
spring.mail.from=123456@qq.com
由于Spring Boot的starter模塊提供了自動化配置,所以在引入了spring-boot-starter-mail依賴之后,會根據(jù)配置文件中的內(nèi)容去創(chuàng)建JavaMailSender實例,因此我們可以直接在需要使用的地方直接@Autowired來引入郵件發(fā)送對象。
EmailService
package com.test.service; /** * @Author chen bo * @Date 2023/10 * @Des */ public interface EmailService { /** * 發(fā)送文本郵件 * * @param to 收件人 * @param subject 主題 * @param content 內(nèi)容 */ void sendSimpleMail(String to, String subject, String content); /** * 發(fā)送HTML郵件 * * @param to 收件人 * @param subject 主題 * @param content 內(nèi)容 */ void sendHtmlMail(String to, String subject, String content); /** * 發(fā)送帶附件的郵件 * * @param to 收件人 * @param subject 主題 * @param content 內(nèi)容 * @param filePath 附件 */ void sendAttachmentsMail(String to, String subject, String content, String filePath); }
EmailServiceImpl
/** * @Author chen bo * @Date 2023/10 * @Des */ @Slf4j @Service public class EmailServiceImpl implements EmailService { /** * Spring Boot 提供了一個發(fā)送郵件的簡單抽象,使用的是下面這個接口,這里直接注入即可使用 */ @Autowired private JavaMailSender mailSender; /** * 配置文件中我的qq郵箱 */ @Value("${spring.mail.from}") private String from; /** * 簡單文本郵件 * @param to 收件人 * @param subject 主題 * @param content 內(nèi)容 */ @Override public void sendSimpleMail(String to, String subject, String content) { //創(chuàng)建SimpleMailMessage對象 SimpleMailMessage message = new SimpleMailMessage(); //郵件發(fā)送人 message.setFrom(from); //郵件接收人 message.setTo(to); //郵件主題 message.setSubject(subject); //郵件內(nèi)容 message.setText(content); //發(fā)送郵件 mailSender.send(message); } /** * html郵件 * @param to 收件人,多個時參數(shù)形式 :"xxx@xxx.com,xxx@xxx.com,xxx@xxx.com" * @param subject 主題 * @param content 內(nèi)容 */ @Override public void sendHtmlMail(String to, String subject, String content) { //獲取MimeMessage對象 MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper messageHelper; try { messageHelper = new MimeMessageHelper(message, true); //郵件發(fā)送人 messageHelper.setFrom(from); //郵件接收人,設(shè)置多個收件人地址 InternetAddress[] internetAddressTo = InternetAddress.parse(to); messageHelper.setTo(internetAddressTo); //messageHelper.setTo(to); //郵件主題 message.setSubject(subject); //郵件內(nèi)容,html格式 messageHelper.setText(content, true); //發(fā)送 mailSender.send(message); //日志信息 log.info("郵件已經(jīng)發(fā)送。"); } catch (Exception e) { log.error("發(fā)送郵件時發(fā)生異常!", e); } } /** * 帶附件的郵件 * @param to 收件人 * @param subject 主題 * @param content 內(nèi)容 * @param filePath 附件 */ @Override public void sendAttachmentsMail(String to, String subject, String content, String filePath) { MimeMessage message = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); FileSystemResource file = new FileSystemResource(new File(filePath)); String fileName = filePath.substring(filePath.lastIndexOf(File.separator)); helper.addAttachment(fileName, file); mailSender.send(message); //日志信息 log.info("郵件已經(jīng)發(fā)送。"); } catch (Exception e) { log.error("發(fā)送郵件時發(fā)生異常!", e); } } }
EmailController
/** * @Author chen bo * @Date 2023/10 * @Des */ @RestController public class EmailController { @Autowired private EmailService emailService; @PostMapping("sendSimpleMail") public String sendSimpleMail(String to, String subject, String content) { emailService.sendSimpleMail(to, subject, content); return "Hi"; } }
postman請求
收到郵件
v源碼地址
https://github.com/toutouge/javademosecond/tree/master/hellolearn文章來源:http://www.zghlxwxcb.cn/news/detail-747845.html
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關(guān)于作者:專注于基礎(chǔ)平臺的項目開發(fā)。如有問題或建議,請多多賜教!
版權(quán)聲明:本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復(fù)。也歡迎園子的大大們指正錯誤,共同進(jìn)步?;蛘咧苯铀叫盼?
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創(chuàng)和持續(xù)寫作的最大動力!
文章來源地址http://www.zghlxwxcb.cn/news/detail-747845.html
到了這里,關(guān)于SpringBoot進(jìn)階教程(七十八)郵件服務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!