Spring?Boot整合郵箱發(fā)送郵件實(shí)例
1. 準(zhǔn)備工作
登錄進(jìn)自己的 qq 郵箱獲取授權(quán)碼
設(shè)置 – 賬戶(hù) – POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)

點(diǎn)擊開(kāi)始獲取授權(quán)碼,將授權(quán)碼保存下來(lái),下面代碼整合的時(shí)候需要使用

2. 代碼整合
創(chuàng)建一個(gè) Spring Boot 項(xiàng)目,引入以下依賴(lài)
<!-- email -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
server:
port: 8080
spring:
# email 配置
mail:
# SMTP 服務(wù)器地址
host: smtp.qq.com
username: # 你的qq 郵箱地址
password: # 授權(quán)碼,上面從 qq 郵箱官網(wǎng)得到的授權(quán)碼
port: 587
protocol: smtp
default-encoding: UTF-8
創(chuàng)建一個(gè)郵件收件人信息的實(shí)體類(lèi)
/**
* @author lishisen
* @description 郵件收件人信息
* @date 2022/1/9 9:37
**/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class EmailModel implements Serializable {
// 收件人郵箱地址
private String receiveEmailAddress;
// 郵箱主題
private String emailTheme;
// 郵件內(nèi)容
private String emailContent;
}
創(chuàng)建一個(gè)服務(wù)提供類(lèi),SendEmailService.java
/**
* @author lishisen
* @description 郵件發(fā)送服務(wù)類(lèi)
* @date 2022/1/9 9:40
**/
@Slf4j
@Component
public class SendEmailService {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private JavaMailSenderImpl javaMailSenderImpl;
// 發(fā)送者地址
private String posterAddress = "1876419736@qq.com";
// 發(fā)送者名稱(chēng)
private String posterName = "測(cè)試郵件發(fā)送";
/**
* 文本發(fā)送
**/
public void sendEmailAsText(final EmailModel emailModel) {
System.out.println(emailModel.toString());
MimeMessagePreparator mimeMessagePreparator = mimeMessage -> {
mimeMessage.setFrom(posterAddress);
mimeMessage.setRecipients(Message.RecipientType.TO, emailModel.getReceiveEmailAddress());
mimeMessage.setText("發(fā)送者地址:" + posterAddress + '\n'
+ "發(fā)送者名稱(chēng):" + posterName + '\n'
+ "內(nèi)容:" + emailModel.getEmailContent());
};
try {
this.javaMailSender.send(mimeMessagePreparator);
log.info("郵箱已返送至[{}]郵箱!", emailModel.getReceiveEmailAddress());
} catch (MailException e) {
log.error("郵箱異常:{}", e);
}
}
/**
* html 網(wǎng)頁(yè)發(fā)送
* 該方法為同步方法
**/
public void sendEmailAsSysExceptionHtml(final EmailModel emailModel, String info) {
MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
MimeMessageHelper mimeMessageHelper;
try {
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setFrom(posterAddress);
mimeMessageHelper.setTo(emailModel.getReceiveEmailAddress());
mimeMessageHelper.setSubject(emailModel.getEmailTheme());
mimeMessageHelper.setText(
"<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>Title</title>\n" +
"</head>\n" +
"<body>\n" +
"<h2>" + info + "</h2>\n" +
"<h3>您的驗(yàn)證碼為:<span style='color: red'" + ">" +
emailModel.getEmailContent() +
"</span> " + ",請(qǐng)?jiān)?5 分鐘內(nèi)進(jìn)行驗(yàn)證</h3>\n" +
"</body>\n" +
"</html>"
, true);
this.javaMailSender.send(mimeMessage);
log.info("郵箱已返送至[{}]郵箱!", emailModel.getReceiveEmailAddress());
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
測(cè)試使用
@Autowired
private SendEmailService sendEmailService;
@Test
public void sendMailTest() {
// 創(chuàng)建收件人實(shí)體類(lèi),封裝收件人的信息
EmailModel emailModel = new EmailModel();
emailModel.setReceiveEmailAddress("18xxxxxqq.com");
emailModel.setEmailTheme("測(cè)試發(fā)送");
emailModel.setEmailContent("測(cè)試發(fā)送郵箱主體信息內(nèi)容");
// 調(diào)用發(fā)送服務(wù)方法執(zhí)行發(fā)送任務(wù)
sendEmailService.sendEmailAsText(emailModel);
System.out.println("郵件發(fā)送成功");
}

總結(jié)
到此這篇關(guān)于Spring Boot整合郵箱發(fā)送郵件實(shí)例的文章就介紹到這了,更多相關(guān)Spring Boot郵箱發(fā)送內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用SpringBoot+OkHttp+fastjson實(shí)現(xiàn)Github的OAuth第三方登錄
這篇文章主要介紹了使用SpringBoot+OkHttp+fastjson實(shí)現(xiàn)Github的OAuth第三方登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
淺談Java后臺(tái)對(duì)JSON格式的處理操作
下面小編就為大家?guī)?lái)一篇淺談Java后臺(tái)對(duì)JSON格式的處理操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
Pulsar源碼徹底解決重復(fù)消費(fèi)問(wèn)題
這篇文章主要為大家介紹了Pulsar源碼徹底解決重復(fù)消費(fèi)問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
SpringAop切入點(diǎn)execution表達(dá)式的深入講解
Spring AOP 可能會(huì)經(jīng)常使用 execution切入點(diǎn)指示符,下面這篇文章主要給大家介紹了關(guān)于SpringAop切入點(diǎn)execution表達(dá)式的相關(guān)資料,需要的朋友可以參考下2021-08-08
RestTemplate如何通過(guò)HTTP?Basic?Auth認(rèn)證示例說(shuō)明
這篇文章主要為大家介紹了RestTemplate如何通過(guò)HTTP?Basic?Auth認(rèn)證的示例說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
Fluent Mybatis如何做到代碼邏輯和sql邏輯的合一
對(duì)比原生Mybatis, Mybatis Plus或者其他框架,F(xiàn)luentMybatis提供了哪些便利呢?很多朋友對(duì)這一問(wèn)題不是很清楚,今天小編給大家?guī)?lái)一篇教程關(guān)于Fluent Mybatis如何做到代碼邏輯和sql邏輯的合一,一起看看吧2021-08-08
使用Spring-Retry解決Spring Boot應(yīng)用程序中的重試問(wèn)題
重試的使用場(chǎng)景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時(shí),由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時(shí),此時(shí)可以多重試幾次。用定時(shí)任務(wù)也可以實(shí)現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個(gè)注解搞定所有,感興趣的可以了解一下2023-04-04

