Spring Boot發(fā)送郵件詳解
Spring框架使用JavaMailSender接口為發(fā)送郵件提供了一個簡單的抽象,并且Spring Boot也為它提供了自動配置和一個starter模塊。
如果spring.mail.host和相關(guān)的庫(通過spring-boot-starter-mail定義)都存在,一個默認的JavaMailSender將被創(chuàng)建。該sender可以通過spring.mail命名空間下的配置項進一步自定義,下面本站素文宅博客具體講述一下Spring Boot如何實現(xiàn)發(fā)送郵件。
引入spring-boot-starter-mail依賴,在pom.xml配置文件中增加如下內(nèi)容(基于之前章節(jié)“Spring Boot 構(gòu)建框架”中的pom.xml文件):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
應(yīng)用發(fā)送郵件案例
在application.properties配置文件中加入如下配置(注意替換自己的用戶名和密碼):
spring.mail.host=smtp.qq.com spring.mail.username=用戶名 //發(fā)送方的郵箱 spring.mail.password=密碼 //對于qq郵箱而言 密碼指的就是發(fā)送方的授權(quán)碼 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true
郵件service服務(wù)代碼,具體如下:
@Service
public class MailService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private JavaMailSender sender;
@Value("${spring.mail.username}")
private String from;
/**
* 發(fā)送純文本的簡單郵件
* @param to
* @param subject
* @param content
*/
public void sendSimpleMail(String to, String subject, String content){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
sender.send(message);
logger.info("簡單郵件已經(jīng)發(fā)送。");
} catch (Exception e) {
logger.error("發(fā)送簡單郵件時發(fā)生異常!", e);
}
}
/**
* 發(fā)送html格式的郵件
* @param to
* @param subject
* @param content
*/
public void sendHtmlMail(String to, String subject, String content){
MimeMessage message = sender.createMimeMessage();
try {
//true表示需要創(chuàng)建一個multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
sender.send(message);
logger.info("html郵件已經(jīng)發(fā)送。");
} catch (MessagingException e) {
logger.error("發(fā)送html郵件時發(fā)生異常!", e);
}
}
/**
* 發(fā)送帶附件的郵件
* @param to
* @param subject
* @param content
* @param filePath
*/
public void sendAttachmentsMail(String to, String subject, String content, String filePath){
MimeMessage message = sender.createMimeMessage();
try {
//true表示需要創(chuàng)建一個multipart message
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);
sender.send(message);
logger.info("帶附件的郵件已經(jīng)發(fā)送。");
} catch (MessagingException e) {
logger.error("發(fā)送帶附件的郵件時發(fā)生異常!", e);
}
}
/**
* 發(fā)送嵌入靜態(tài)資源(一般是圖片)的郵件
* @param to
* @param subject
* @param content 郵件內(nèi)容,需要包括一個靜態(tài)資源的id,比如:<img src=\"cid:rscId01\" >
* @param rscPath 靜態(tài)資源路徑和文件名
* @param rscId 靜態(tài)資源id
*/
public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
MimeMessage message = sender.createMimeMessage();
try {
//true表示需要創(chuàng)建一個multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource res = new FileSystemResource(new File(rscPath));
helper.addInline(rscId, res);
sender.send(message);
logger.info("嵌入靜態(tài)資源的郵件已經(jīng)發(fā)送。");
} catch (MessagingException e) {
logger.error("發(fā)送嵌入靜態(tài)資源的郵件時發(fā)生異常!", e);
}
}
}
簡單測試代碼如下:
public class MailTests extends BasicUtClass{
@Autowired
private MailService mailService;
private String to = "xujijun@mail.cn";
@Test
public void sendSimpleMail() {
mailService.sendSimpleMail(to, "主題:簡單郵件", "測試郵件內(nèi)容");
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java8新特性之類型注解_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Java8新特性之類型注解的相關(guān)資料,需要的朋友可以參考下2017-06-06
SpringBoot項目中通過@Value給參數(shù)賦值失敗的解決方案
springboot項目中通過@Value給屬性附值失敗,給參數(shù)賦值失敗,打印為空值,文中通過代碼示例給大家介紹的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下2024-04-04
支票金額大寫轉(zhuǎn)換示例(金額大寫轉(zhuǎn)換器)
這篇文章主要介紹了支票金額大寫轉(zhuǎn)換示例(金額大寫轉(zhuǎn)換器),需要的朋友可以參考下2014-02-02
java實現(xiàn)Img與PDF相互轉(zhuǎn)換
這篇文章主要為大家詳細介紹了java實現(xiàn)Img與PDF相互轉(zhuǎn)換的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Mybatis?連接mysql數(shù)據(jù)庫底層運行的原理分析
這篇文章主要介紹了Mybatis?連接mysql數(shù)據(jù)庫底層運行的原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
基于servlet實現(xiàn)統(tǒng)計網(wǎng)頁訪問次數(shù)
這篇文章主要為大家詳細介紹了基于servlet實現(xiàn)統(tǒng)計網(wǎng)頁訪問次數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

