最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能

 更新時(shí)間:2023年12月29日 09:22:36   作者:原來(lái)是好奇心  
郵件發(fā)送是一個(gè)很普遍的功能,springboot整合了相關(guān)的starter,本文給大家介紹了可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的郵件發(fā)送功能的實(shí)例,文中通過(guò)代碼給大家介紹的非常詳細(xì),感興趣的朋友可以參考下

說(shuō)明:郵件發(fā)送是一個(gè)很普遍的功能,springboot整合了相關(guān)的starter,以下方式可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的郵件發(fā)送功能。

1、引入依賴

  • mail依賴,發(fā)送郵件使用
  • test依賴,測(cè)試使用
<!-- email -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- test -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>compile</scope>
</dependency>

2、配置yml文件

spring:
  mail:
    host: smtp.qq.com
    port: 25
    protocol: smtp
    username: 123456789@qq.com
    password: oujhlavdjhirgiee  
    default-encoding: UTF-8

注意:password屬性是郵箱授權(quán)碼,用于第三方接口調(diào)用使用, 而不是郵箱登錄密碼,需要登錄郵箱查看或者申請(qǐng)獲取。下面是qq郵箱授權(quán)碼獲取方式(設(shè)置->賬號(hào)->賬號(hào)安全)

3、編寫(xiě)測(cè)試代碼

這里主要測(cè)試了發(fā)送兩種格式的郵件,一種是純文字的郵件,另一種是帶有附件的郵件。

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
 
@SpringBootTest
class EmailUtilsTest {
 
    // 發(fā)件人郵箱
    @Value("${spring.mail.username}")
    private String mailFrom;
 
    // 收件人郵箱
    private static String MAIL_TO = "zhangsan123@163.com";
 
    // 測(cè)試發(fā)送PDF文件的路徑
    private static String PDF_PATH = "E:\\test.pdf";
 
    @Autowired
    private JavaMailSender mailSender;
 
    /**
     * 測(cè)試發(fā)送文字內(nèi)容
     */
    @Test
    void testSendText() {
        // 郵件標(biāo)題
        String subject = "測(cè)試郵件";
        // 郵件文字內(nèi)容
        String textContent = "你好,這是測(cè)試郵件4";
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(mailFrom);
            helper.setTo(MAIL_TO);
            helper.setSubject(subject);
            helper.setText(textContent, true);
            mailSender.send(message);
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
 
    /**
     * 測(cè)試發(fā)送文件內(nèi)容
     */
    @Test
    void testSendFile() {
        // 郵件標(biāo)題
        String subject = "一份測(cè)試發(fā)送的PDF文件";
        // 郵件文本內(nèi)容
        String textContent = "這是您的文件,請(qǐng)注意查收";
        // 郵件文件內(nèi)容
        FileSystemResource pdfFile = new FileSystemResource(PDF_PATH);
        // 文件名字
        String fileName = "測(cè)試文件.pdf";
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(mailFrom);
            helper.setTo(MAIL_TO);
            helper.setSubject(subject);
            helper.setText(textContent, true);
            // 如果一次要發(fā)送多個(gè)附件, 只需要添加多個(gè) helper.addAttachment() 即可
            helper.addAttachment(fileName, pdfFile);
            mailSender.send(message);
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
 
    /**
     * 擴(kuò)展: 不使用yml文件, 使用對(duì)象的方式設(shè)置屬性值
     */
    @Test
    void testSendFileNoYml() {
        // 郵件標(biāo)題
        String subject = "一份測(cè)試發(fā)送的PDF文件";
        // 郵件文本內(nèi)容
        String textContent = "這是您的文件,請(qǐng)注意查收";
        // 郵件文件內(nèi)容
        FileSystemResource pdfFile = new FileSystemResource(PDF_PATH);
        // 文件名字
        String fileName = "測(cè)試文件.pdf";
        // 獲取自定義屬性的sender
        JavaMailSender javaMailSender = getJavaMailSender();
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(mailFrom);
            helper.setTo(MAIL_TO);
            helper.setSubject(subject);
            helper.setText(textContent, true);
            // 如果一次要發(fā)送多個(gè)附件, 只需要添加多個(gè) helper.addAttachment() 即可
            helper.addAttachment(fileName, pdfFile);
            mailSender.send(message);
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
 
    /**
     * 獲取自定義的屬性的 JavaMailSender 對(duì)象
     * @return JavaMailSender
     */
    public JavaMailSender getJavaMailSender(){
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        // 設(shè)置發(fā)送的服務(wù)器ip (qq:smtp.qq.com   網(wǎng)易:smtp.126.com)
        javaMailSender.setHost("qq:smtp.qq.com");
        javaMailSender.setUsername("1454376161@qq.com");
        // 郵箱授權(quán)碼
        javaMailSender.setPassword("oujhldvdjhirgiea");
        // 設(shè)置端口(默認(rèn)25, 或者設(shè)置456)
        javaMailSender.setPort(465);
        // 設(shè)置編碼方式,避免常出現(xiàn)亂碼 
        javaMailSender.setDefaultEncoding("UTF-8");
        
        //其他屬性
        Properties p = new Properties();
        p.setProperty("mail.smtp.auth", "true");
        p.setProperty("mail.smtp.ssl", "true");
        p.setProperty("mail.smtp.socketFactory.port", "465");
        p.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        p.setProperty("mail.smtp.starttls.enable", "true");
        p.setProperty("mail.smtp.starttls.required", "true");
        javaMailSender.setJavaMailProperties(p);
        return javaMailSender;
    }
}

到此這篇關(guān)于SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能的文章就介紹到這了,更多相關(guān)SpringBoot整合Javamail郵件發(fā)送內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java程序控制邏輯—流程控制

    Java程序控制邏輯—流程控制

    這篇文章主要介紹了Java程序的控制邏輯流程控制,流程控制中最基本的就是條件執(zhí)行,也就是說(shuō),一些操作只能在某些條件滿足的情況下才執(zhí)行,在一些條件下執(zhí)行某種操作,在另外一些條件下執(zhí)行另外的操作,需要的朋友可以參考一下
    2022-01-01
  • Spring獲取管理對(duì)象常用方法詳解

    Spring獲取管理對(duì)象常用方法詳解

    這篇文章主要介紹了Spring獲取管理對(duì)象常用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 使用lombok@Data存在extends時(shí)需要注意的問(wèn)題

    使用lombok@Data存在extends時(shí)需要注意的問(wèn)題

    在Java編程中,正確實(shí)現(xiàn)equals方法是保證對(duì)象比較一致性的關(guān)鍵,使用instanceof檢查類型可能導(dǎo)致違反對(duì)稱性原則,即當(dāng)子類和父類都重寫(xiě)equals時(shí)可能出現(xiàn)a.equals(b)不等于b.equals(a)的情況,Lombok的@EqualsAndHashCode注解可以通過(guò)callSuper=true參數(shù)
    2024-10-10
  • spring-boot-autoconfigure模塊用法詳解

    spring-boot-autoconfigure模塊用法詳解

    autoconfigure就是自動(dòng)配置的意思,spring-boot通過(guò)spring-boot-autoconfigure體現(xiàn)了"約定優(yōu)于配置"這一設(shè)計(jì)原則,而spring-boot-autoconfigure主要用到了spring.factories和幾個(gè)常用的注解條件來(lái)實(shí)現(xiàn)自動(dòng)配置,思路很清晰也很簡(jiǎn)單,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • MyBatis-Plus 分頁(yè)插件配置的兩種方式實(shí)現(xiàn)

    MyBatis-Plus 分頁(yè)插件配置的兩種方式實(shí)現(xiàn)

    本文主要介紹了MyBatis-Plus 分頁(yè)插件配置的兩種方式實(shí)現(xiàn),包括使用PaginationInterceptor和MybatisPlusInterceptor兩種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Java MQTT實(shí)戰(zhàn)應(yīng)用

    Java MQTT實(shí)戰(zhàn)應(yīng)用

    本文詳解MQTT協(xié)議,涵蓋其發(fā)布/訂閱機(jī)制、低功耗高效特性、三種服務(wù)質(zhì)量等級(jí)(QoS0/1/2),以及客戶端、代理、主題的核心概念,最后提供Linux部署教程、SpringBoot整合方法與MQTTX工具下載鏈接,對(duì)java mqtt相關(guān)知識(shí)感興趣的朋友一起看看吧
    2025-06-06
  • mybatis注解動(dòng)態(tài)sql注入map和list方式(防sql注入攻擊)

    mybatis注解動(dòng)態(tài)sql注入map和list方式(防sql注入攻擊)

    這篇文章主要介紹了mybatis注解動(dòng)態(tài)sql注入map和list方式(防sql注入攻擊),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2021-11-11
  • Spring MVC中處理ajax請(qǐng)求的跨域問(wèn)題與注意事項(xiàng)詳解

    Spring MVC中處理ajax請(qǐng)求的跨域問(wèn)題與注意事項(xiàng)詳解

    跨域問(wèn)題是我們大家在開(kāi)發(fā)中會(huì)經(jīng)常遇到的一個(gè)問(wèn)題,所以下面這篇文章主要給大家介紹了關(guān)于Spring MVC中處理ajax請(qǐng)求的跨域問(wèn)題與注意事項(xiàng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • SpringBoot項(xiàng)目引入MCP的實(shí)現(xiàn)示例

    SpringBoot項(xiàng)目引入MCP的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot項(xiàng)目引入MCP的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Gradle jvm插件系列教程之Java?Library插件權(quán)威詳解

    Gradle jvm插件系列教程之Java?Library插件權(quán)威詳解

    這篇文章主要介紹了Java?Library插件權(quán)威詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01

最新評(píng)論

灌阳县| 确山县| 手游| 金平| 唐海县| 鹤山市| 柞水县| 木兰县| 大新县| 民和| 昌邑市| 卓尼县| 徐州市| 宁乡县| 靖远县| 启东市| 顺昌县| 仁化县| 延川县| 新闻| 霍林郭勒市| 宜良县| 旅游| 广平县| 大名县| 册亨县| 托克逊县| 天长市| 长兴县| 常州市| 拉萨市| 剑河县| 岳阳市| 获嘉县| 石城县| 通河县| 南丹县| 郓城县| 绥芬河市| 乡宁县| 安陆市|