欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot3整合郵件服務(wù)實(shí)現(xiàn)郵件發(fā)送功能

 更新時(shí)間:2024年05月28日 09:39:08   作者:蒾酒  
本文介紹了spring boot整合email服務(wù),實(shí)現(xiàn)發(fā)送驗(yàn)證碼,郵件(普通文本郵件、靜態(tài)資源郵件、附件郵件),文中通過(guò)代碼示例介紹的非常詳細(xì),堅(jiān)持看完相信對(duì)你有幫助,需要的朋友可以參考下

內(nèi)容概要

本文介紹了spring boot整合email服務(wù),實(shí)現(xiàn)發(fā)送驗(yàn)證碼,郵件(普通文本郵件、靜態(tài)資源郵件、附件郵件)。

開通服務(wù)

實(shí)現(xiàn)email服務(wù)需要先將自己的郵箱開通POP3/IMAP服務(wù)才可以通過(guò)該郵箱發(fā)送郵件,開通步驟如下:

這里以QQ郵箱為例

1.進(jìn)入QQ郵箱官網(wǎng)

登錄QQ郵箱

2.登錄后點(diǎn)擊設(shè)置

3.選擇賬號(hào)

找到 POP3/IMAP.....服務(wù)這里開啟你的服務(wù),這里我已經(jīng)開啟了的。

4.開啟服務(wù)

開啟成功會(huì)得到授權(quán)碼 ,記住這個(gè)授權(quán)碼。下面開始在spring boot中整合。

spring boot整合

1.依賴引入

pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2.配置屬性

application.yml:

修改成你自己的實(shí)際信息。

spring:
  #郵件服務(wù)配置
  mail:
    host: smtp.qq.com #郵件服務(wù)器地址
    protocol: smtp #協(xié)議
    username: 305462*****@qq.com #發(fā)送郵件的郵箱也就是你開通服務(wù)的郵箱
    password: fiwvcy******d #開通服務(wù)后得到的授權(quán)碼
    default-encoding: utf-8 #郵件內(nèi)容的編碼

3.創(chuàng)建郵件發(fā)送工具類

使用@component注解標(biāo)記為組件,可以在Service中注入使用。

里面一共定義了三種發(fā)送郵件方法:

  • 發(fā)送純文本的普通郵件,可以發(fā)送一些純文本的消息以及驗(yàn)證碼內(nèi)容。
  • 發(fā)送HTML格式的文本內(nèi)容,可以發(fā)一些靜態(tài)資源,圖片,音頻,視頻等,也可以發(fā)驗(yàn)證碼信息。
  • 發(fā)送攜帶附件的郵件,比如word,excel,pdf文檔或者其他文件。

具體可以根據(jù)業(yè)務(wù)需求調(diào)整代碼。我實(shí)現(xiàn)的較為簡(jiǎn)單可以當(dāng)個(gè)模板使用。

import jakarta.annotation.Resource;
import jakarta.mail.internet.MimeMessage;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
 
import java.io.File;
import java.util.Objects;
 
/**
 * @author mijiupro
 */
@Component
public class EmailUtil {
    @Resource
    private JavaMailSender mailSender;
 
    @Value("${spring.mail.username}")
    private String from ;// 發(fā)件人
 
    /**
     * 發(fā)送一般郵件--無(wú)附件
     * @param to 收件人
     * @param subject 主題
     * @param content 內(nèi)容
     * @return 是否成功
     */
    @SneakyThrows(Exception.class)
    public boolean sendGeneralEmail(String subject, String content, String... to){
        // 創(chuàng)建郵件消息
        org.springframework.mail.SimpleMailMessage message = new org.springframework.mail.SimpleMailMessage();
        message.setFrom(from);
        // 設(shè)置收件人
        message.setTo(to);
        // 設(shè)置郵件主題
        message.setSubject(subject);
        // 設(shè)置郵件內(nèi)容
        message.setText(content);
 
        // 發(fā)送郵件
        mailSender.send(message);
 
        return true;
    }
    /**
     * 發(fā)送帶附件的郵件
     * @param to 收件人
     * @param subject 主題
     * @param content 內(nèi)容
     * @param filePaths 附件路徑
     * @return 是否成功
     */
    @SneakyThrows(Exception.class)
    public boolean sendAttachmentsEmail(String subject, String content, String[] to, String[] filePaths) {
        // 創(chuàng)建郵件消息
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setFrom(from);
        // 設(shè)置收件人
        helper.setTo(to);
        // 設(shè)置郵件主題
        helper.setSubject(subject);
        // 設(shè)置郵件內(nèi)容
        helper.setText(content);
 
        // 添加附件
        if (filePaths != null) {
            for (String filePath : filePaths) {
                FileSystemResource file = new FileSystemResource(new File(filePath));
                helper.addAttachment(Objects.requireNonNull(file.getFilename()), file);
 
            }
        }
        // 發(fā)送郵件
        mailSender.send(mimeMessage);
        return true;
    }
 
    /**
     * 發(fā)送帶靜態(tài)資源的郵件
     * @param to 收件人
     * @param subject 主題
     * @param content 內(nèi)容
     * @param rscPath 靜態(tài)資源路徑
     * @param rscId 靜態(tài)資源id
     * @return 是否成功
     */
    @SneakyThrows(Exception.class)
    public boolean sendInlineResourceEmail(String subject, String content, String to, String rscPath, String rscId) {
        // 創(chuàng)建郵件消息
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        // 設(shè)置發(fā)件人
        helper.setFrom(from);
        // 設(shè)置收件人
        helper.setTo(to);
        // 設(shè)置郵件主題
        helper.setSubject(subject);
 
        //html內(nèi)容圖片
        String contentHtml = "<html><body>這是郵件的內(nèi)容,包含一個(gè)圖片:<img src=\'cid:" + rscId + "\'>"+content+"</body></html>";
 
        helper.setText(contentHtml, true);
        //指定講資源地址
        FileSystemResource res = new FileSystemResource(new File(rscPath));
        helper.addInline(rscId, res);
 
        mailSender.send(mimeMessage);
        return true;
    }
 
}

4.編寫測(cè)試用例測(cè)試

下面測(cè)試前兩種發(fā)送郵件的方法。

測(cè)試發(fā)送普通文本郵件

import com.mijiu.commom.util.EmailUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
 
@SpringBootTest
public class EmailTest {
    @Autowired
    private EmailUtil emailUtil;
 
 
    @Test
    public void sendEmail() {
        //發(fā)送郵件
        boolean b = emailUtil.sendGeneralEmail("測(cè)試郵件", " 這是測(cè)試郵件", "你的郵箱@163.com");
        System.out.println(b);
    }
}

修改成發(fā)送目標(biāo)郵箱運(yùn)行代碼測(cè)試即可。 

測(cè)試成功。

測(cè)試發(fā)送圖片郵件

import com.mijiu.commom.util.EmailUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
 
@SpringBootTest
public class EmailTest {
    @Autowired
    private EmailUtil emailUtil;
 
 
    @Test
    public void sendEmail() {
 
        // 發(fā)送圖片郵件
        boolean b = emailUtil.sendInlineResourceEmail("測(cè)試郵件", " 這是測(cè)試郵件", "你的郵箱@163.com",
                "C:\\Users\\mijiupro\\Desktop\\潮.jpg", "C:\\Users\\mijiupro\\Desktop\\潮.jpg");
        System.out.println(b);
    }
}

修改成發(fā)送目標(biāo)郵箱運(yùn)行代碼測(cè)試即可。  

以上就是SpringBoot3整合郵件服務(wù)實(shí)現(xiàn)郵件發(fā)送功能的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot3郵件發(fā)送的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringSecurity中的Filter Chain(過(guò)濾器鏈)

    SpringSecurity中的Filter Chain(過(guò)濾器鏈)

    Spring Security的Filter Chain是由一系列過(guò)濾器組成的管道,每個(gè)過(guò)濾器執(zhí)行特定的安全功能,Spring Security能夠提供強(qiáng)大而靈活的安全控制機(jī)制,從而保護(hù)你的應(yīng)用程序不受各種網(wǎng)絡(luò)安全威脅的侵害,本文介紹SpringSecurity中的Filter Chain,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Java如何解析html中的內(nèi)容并存到數(shù)據(jù)庫(kù)詳解

    Java如何解析html中的內(nèi)容并存到數(shù)據(jù)庫(kù)詳解

    最近用到了Java解析Html的一個(gè)庫(kù)Jsoup,所以下面這篇文章主要給大家介紹了關(guān)于Java如何解析html中的內(nèi)容并存到數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Maven構(gòu)建忽略測(cè)試失敗的解決方案

    Maven構(gòu)建忽略測(cè)試失敗的解決方案

    這篇文章主要介紹了Maven構(gòu)建忽略測(cè)試失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot整合log4j日志與HashMap的底層原理解析

    SpringBoot整合log4j日志與HashMap的底層原理解析

    這篇文章主要介紹了SpringBoot整合log4j日志與HashMap的底層原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java常用函數(shù)式接口總結(jié)

    Java常用函數(shù)式接口總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java常用函數(shù)式接口展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 聊聊Java中的Native修飾符

    聊聊Java中的Native修飾符

    這篇文章主要介紹了Java中的Native修飾符使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot利用MDC機(jī)制過(guò)濾單次請(qǐng)求的所有日志

    SpringBoot利用MDC機(jī)制過(guò)濾單次請(qǐng)求的所有日志

    在服務(wù)出現(xiàn)故障時(shí),我們經(jīng)常需要獲取一次請(qǐng)求流程里的所有日志進(jìn)行定位 ,如何將一次數(shù)據(jù)上報(bào)請(qǐng)求中包含的所有業(yè)務(wù)日志快速過(guò)濾出來(lái),就是本文要介紹的,需要的朋友可以參考下
    2024-04-04
  • SpringData JPA中查詢接口Repository的使用

    SpringData JPA中查詢接口Repository的使用

    本文主要介紹了SpringData JPA中查詢接口Repository的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • springboot項(xiàng)目獲取請(qǐng)求頭當(dāng)中的token的方法

    springboot項(xiàng)目獲取請(qǐng)求頭當(dāng)中的token的方法

    本文主要介紹了springboot項(xiàng)目獲取請(qǐng)求頭當(dāng)中的token的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Java使用ExecutorService來(lái)停止線程服務(wù)

    Java使用ExecutorService來(lái)停止線程服務(wù)

    這篇文章主要介紹了Java使用ExecutorService來(lái)停止線程服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論