Springboot實(shí)現(xiàn)發(fā)送郵件
本文實(shí)例為大家分享了Springboot實(shí)現(xiàn)發(fā)送郵件功能的具體代碼,供大家參考,具體內(nèi)容如下
第一章 背景介紹
1.1 使用場(chǎng)景
1、注冊(cè)驗(yàn)證;
2、網(wǎng)站營(yíng)銷(xiāo);
3、安全的最后一道防線;
4、提醒、監(jiān)控警告;
5、觸發(fā)機(jī)制。
1.2 郵件發(fā)送原理
1.郵件傳輸協(xié)議:SMTP協(xié)議和POP3協(xié)議
2.內(nèi)容不斷發(fā)展:IMAP和Mme協(xié)議
1.3 郵件發(fā)送流程

第二章 使用SpringBoot完成郵件發(fā)送
2.1 開(kāi)發(fā)流程

2.2 開(kāi)發(fā)簡(jiǎn)單文本郵件
2.2.1 引入相關(guān)jar包
在pom.xml中添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2.2.2 配置郵箱參數(shù)
在配置文件里面配置:這里的密碼是授權(quán)碼,不是網(wǎng)頁(yè)上的密碼
spring.mail.host=smtp.163.com spring.mail.username=XXX@163.com spring.mail.password=XXX spring.mail.default-encoding=utf-8
2.2.3 封裝SimpleMailMessage
SimpleMailMessage message = new SimpleMailMessage();
2.2.4 JavaMailSender進(jìn)行發(fā)送
@Autowired private JavaMailSender mailSender; //使用JavaMailSender發(fā)送郵件 mailSender.send(message);
具體的實(shí)現(xiàn):
/**
* @Description: 發(fā)送郵件
* @Author: yzy
* @Date: 2021/10/19 14:01
**/
@Service
public class MailService {
@Value("${spring.mail.username}")
private String sendPeople;
@Autowired
private JavaMailSender mailSender;
/**
* @Description: 發(fā)送文本文件
* @author: yzy
* @date: 2021/10/19 14:01
* @Param:
* @return:
*/
public void sendSimpleMail(String to,String subject,String content) {
SimpleMailMessage message = new SimpleMailMessage();
//接收方
message.setTo(to);
//發(fā)送郵件的主題
message.setSubject(subject);
//發(fā)送郵件內(nèi)容
message.setText(content);
//發(fā)送人
message.setFrom(sendPeople);
//使用JavaMailSender發(fā)送郵件
mailSender.send(message);
}
}
測(cè)試:
package com.yzy.restaurant.mapper;
import com.yzy.restaurant.MailService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailTest {
@Autowired
private MailService mailService;
@Test
public void sendSimpleMailTest() {
mailService.sendSimpleMail("yzy20162362@163.com","這是一個(gè)簡(jiǎn)單的demo","哈哈哈,發(fā)送成功了!");
}
}
啟動(dòng):

效果:

2.3 開(kāi)發(fā)HTML郵件
上代碼,在MailService 和MailTest 加
/**
* @Description: 發(fā)送html郵寄
* @author: yzy
* @date: 2021/10/19 14:58
* @Param:
* @return:
*/
public void sendMailHtml(String to,String subject,String content) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
helper.setFrom(sendPeople);
mailSender.send(message);
}
/**
* @Description: 發(fā)送html郵寄
* @author: yzy
* @date: 2021/10/19 14:58
* @Param:
* @return:
*/
public void sendMailHtml(String to,String subject,String content) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
helper.setFrom(sendPeople);
mailSender.send(message);
}
2.3 開(kāi)發(fā)附件郵件
上代碼,在MailService 和MailTest 加
/**
* @Description: 發(fā)送附件郵件
* @author: yzy
* @date: 2021/10/19 15:12
* @Param:
* @return:
*/
public void sendAttachmentsMail(String to,String subject,String content,String filePath) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
helper.setFrom(sendPeople);
//讀取
FileSystemResource file = new FileSystemResource(new File(filePath));
//獲取文件名
String filename = file.getFilename();
//設(shè)置附件
helper.addAttachment(filename,file);
//發(fā)送
mailSender.send(message);
}
@Test
public void sendAttachmentsMailTest() throws MessagingException {
String filePath = "D:/玖佳智能 2020年3月第3周周工作匯總(3月16-3月20日)(1).xlsx";
mailService.sendAttachmentsMail("yzy20162362@163.com","這是一封附件郵件","哈哈哈,附件郵件發(fā)送成功了",filePath);
}
2.4 圖片郵件
上代碼,在MailService 和MailTest 加
/**
* @Description: 帶圖片郵件
* @author: yzy
* @date: 2021/10/19 15:35
* @Param:
* @return:
*/
public void sendPhotoMail(String to,String subject,String content,String rscPath, String rscId) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
helper.setFrom(sendPeople);
//讀取
FileSystemResource rec = new FileSystemResource(new File(rscPath));
helper.addInline(rscId,rec);
//發(fā)送
mailSender.send(message);
}
@Test
public void sendPhotoMailTest () throws MessagingException {
String imgPath = "C:\\Users\\yzy\\Desktop\\微信圖片_20210917201828.jpg";
String rsc = "0001";
mailService.sendPhotoMail("yzy20162362@163.com","這是一封圖片郵件","哈哈哈,圖片郵件發(fā)送成功了",imgPath,rsc);
}
2.5 郵件模板
模板郵件特別適用于:
1.用戶注冊(cè)的郵件;2.忘記密碼的郵件
我用的是thymeleaf,前提是themleaf已經(jīng)配置好,上代碼
新建emailTemplate的頁(yè)面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>郵件模板</title>
</head>
<body>
你好,感謝您的注冊(cè),這是一封驗(yàn)證郵件,請(qǐng)點(diǎn)擊下面的連接完成注冊(cè),感謝您的支持!<br>
<a rel="#" th:href="@{https://mail.163.com}" rel="external nofollow" >激活賬戶</a>>
</body>
</html>
測(cè)試代碼:
@Test
public void sendTemplateMailTest () throws MessagingException {
Context content = new Context();
content.setVariable("id","111");
String emailContent = templateEngine.process("emailTemplate", content);
mailService.sendMailHtml("yzy20162362@163.com","這是一封模板郵件",emailContent);
}
效果:

常見(jiàn)錯(cuò)誤:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot實(shí)現(xiàn)發(fā)送QQ郵件的示例代碼
- springboot實(shí)現(xiàn)自動(dòng)郵件發(fā)送任務(wù)詳解
- SpringBoot實(shí)現(xiàn)郵件發(fā)送的示例代碼
- SpringBoot實(shí)現(xiàn)發(fā)送郵件、發(fā)送微信公眾號(hào)推送功能
- SpringBoot實(shí)現(xiàn)發(fā)送電子郵件
- SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼
- springboot 整合郵件發(fā)送功能
- SpringBoot整合Mail發(fā)送郵件功能
- Springboot發(fā)送郵件功能的實(shí)現(xiàn)詳解
相關(guān)文章
SpringCloud中NacosNamingService的作用詳解
這篇文章主要介紹了SpringCloud中NacosNamingService的作用詳解,NacosNamingService類(lèi)完成服務(wù)實(shí)例注冊(cè),撤銷(xiāo)與獲取服務(wù)實(shí)例操作,NacosNamingService初始化采用單例模式,使用反射生成,需要的朋友可以參考下2023-11-11
詳解Spring整合Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)
本篇文章主要介紹了詳解Spring整合Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
在SpringBoot中如何利用Redis實(shí)現(xiàn)互斥鎖
當(dāng)我們利用Redis存儲(chǔ)熱點(diǎn)數(shù)據(jù)時(shí),突然就過(guò)期失效或者被刪除了,導(dǎo)致大量請(qǐng)求同時(shí)訪問(wèn)數(shù)據(jù)庫(kù),增加了數(shù)據(jù)庫(kù)的負(fù)載,為減輕數(shù)據(jù)庫(kù)的負(fù)載我們利用互斥鎖,本文重點(diǎn)介紹在SpringBoot中如何利用Redis實(shí)現(xiàn)互斥鎖,感興趣的朋友一起看看吧2023-09-09
Spring中的@RestController注解詳細(xì)解析
這篇文章主要介紹了Spring中的@RestController注解詳細(xì)解析,@RestController 是 Spring Framework 中的一個(gè)注解,用于標(biāo)識(shí)一個(gè)類(lèi)為 RESTful Web 服務(wù)的控制器(Controller),處理 HTTP 請(qǐng)求并返回相應(yīng)的數(shù)據(jù),2024-01-01
java編程實(shí)現(xiàn)國(guó)際象棋棋盤(pán)
這篇文章主要為大家詳細(xì)介紹了java編程實(shí)現(xiàn)國(guó)際象棋棋盤(pán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
Kotlin基礎(chǔ)教程之伴生對(duì)象,getter,setter,內(nèi)部,局部,匿名類(lèi),可變參數(shù)
這篇文章主要介紹了Kotlin基礎(chǔ)教程之伴生對(duì)象,getter,setter,內(nèi)部,局部,匿名類(lèi),可變參數(shù)的相關(guān)資料,需要的朋友可以參考下2017-05-05
詳解如何使用tldb數(shù)據(jù)庫(kù)的java客戶端
這篇文章主要為大家介紹了如何使用tldb數(shù)據(jù)庫(kù)的java客戶端過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09

