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

Spring?Boot整合郵箱發(fā)送郵件實(shí)例

 更新時(shí)間:2022年02月18日 14:38:06   作者:it永遠(yuǎn)的學(xué)習(xí)者  
大家好,本篇文章主要講的是Spring?Boot整合郵箱發(fā)送郵件實(shí)例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

1. 準(zhǔn)備工作

登錄進(jìn)自己的 qq 郵箱獲取授權(quán)碼

設(shè)置 – 賬戶 – POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)

image-20220218112624617

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

image-20220218112729768

2. 代碼整合

創(chuàng)建一個(gè) Spring Boot 項(xiàng)目,引入以下依賴

<!-- 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í)體類

/**
 * @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ù)提供類,SendEmailService.java

/**
 * @author lishisen
 * @description 郵件發(fā)送服務(wù)類
 * @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ā)送者名稱
    private String posterName = "測試郵件發(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ā)送者名稱:" + posterName + '\n'
                    + "內(nèi)容:" + emailModel.getEmailContent());
        };
        try {
            this.javaMailSender.send(mimeMessagePreparator);
            log.info("郵箱已返送至[{}]郵箱!", emailModel.getReceiveEmailAddress());
        } catch (MailException e) {
            log.error("郵箱異常:{}", e);
        }
    }

    /**
     * html 網(wǎng)頁發(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> " + ",請?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();
        }
    }
}

測試使用

@Autowired
private SendEmailService sendEmailService;
@Test
public void sendMailTest() {
    // 創(chuàng)建收件人實(shí)體類,封裝收件人的信息
    EmailModel emailModel = new EmailModel();
    emailModel.setReceiveEmailAddress("18xxxxxqq.com");
    emailModel.setEmailTheme("測試發(fā)送");
    emailModel.setEmailContent("測試發(fā)送郵箱主體信息內(nèi)容");
    // 調(diào)用發(fā)送服務(wù)方法執(zhí)行發(fā)送任務(wù)
    sendEmailService.sendEmailAsText(emailModel);
    System.out.println("郵件發(fā)送成功");
}

image-20220218113229755

總結(jié)

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

相關(guān)文章

  • Java狀態(tài)設(shè)計(jì)模式實(shí)現(xiàn)對象狀態(tài)轉(zhuǎn)換的優(yōu)雅方式

    Java狀態(tài)設(shè)計(jì)模式實(shí)現(xiàn)對象狀態(tài)轉(zhuǎn)換的優(yōu)雅方式

    Java狀態(tài)設(shè)計(jì)模式通過將對象的行為和狀態(tài)分離,使對象能夠根據(jù)不同的狀態(tài)進(jìn)行不同的行為操作。它通過將狀態(tài)抽象成一個(gè)獨(dú)立的類來實(shí)現(xiàn)對狀態(tài)的封裝,從而簡化了復(fù)雜的條件判斷和狀態(tài)轉(zhuǎn)換
    2023-04-04
  • Java編程中的條件判斷之if語句的用法詳解

    Java編程中的條件判斷之if語句的用法詳解

    這篇文章主要介紹了Java編程中的條件判斷之if語句的用法詳解,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • 詳解jvm中的標(biāo)量替換

    詳解jvm中的標(biāo)量替換

    這篇文章主要介紹了詳解jvm中的標(biāo)量替換,幫助大家更好的理解和使用Java虛擬機(jī),感興趣的朋友可以了解下
    2020-09-09
  • SpringBoot 項(xiàng)目添加 MDC 日志鏈路追蹤的執(zhí)行流程

    SpringBoot 項(xiàng)目添加 MDC 日志鏈路追蹤的執(zhí)行流程

    日志鏈路追蹤就是將一個(gè)標(biāo)志跨線程進(jìn)行傳遞,在一般的小項(xiàng)目中也就是在你新起一個(gè)線程的時(shí)候,或者使用線程池執(zhí)行任務(wù)的時(shí)候會(huì)用到,比如追蹤一個(gè)用戶請求的完整執(zhí)行流程,本文給大家介紹SpringBoot MDC 日志鏈路追蹤的代碼,感興趣的朋友一起看看吧
    2021-06-06
  • 解決java maven項(xiàng)目找不到j(luò)console-1.8.0.jar和tools-1.8.0.jar包問題

    解決java maven項(xiàng)目找不到j(luò)console-1.8.0.jar和tools-1.8.0.jar包問題

    這篇文章主要介紹了解決java maven項(xiàng)目找不到j(luò)console-1.8.0.jar和tools-1.8.0.jar包問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 源碼解讀Mybatis占位符#和$的區(qū)別

    源碼解讀Mybatis占位符#和$的區(qū)別

    這篇文章主要介紹了Mybatis占位符#和$的區(qū)別通過源碼解讀,針對筆者日常開發(fā)中對?Mybatis?占位符?#{}?和?${}?使用時(shí)機(jī)結(jié)合源碼,思考總結(jié)而來,需要的朋友可以參考下
    2023-02-02
  • MyBatisPlus的簡介及案例詳解

    MyBatisPlus的簡介及案例詳解

    MyBatisPlus(簡稱MP)是基于MyBatis框架基礎(chǔ)上開發(fā)的增強(qiáng)型工具,旨在簡化開發(fā)、提高效率。本文將為大家詳細(xì)介紹一下MyBatisPlus是使用,需要的可以參考一下
    2022-07-07
  • SpringBoot集成Zipkin實(shí)現(xiàn)分布式全鏈路監(jiān)控

    SpringBoot集成Zipkin實(shí)現(xiàn)分布式全鏈路監(jiān)控

    這篇文章主要介紹了SpringBoot集成Zipkin實(shí)現(xiàn)分布式全鏈路監(jiān)控的方法啊,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Spring Boot 與 Kotlin 上傳文件的示例代碼

    Spring Boot 與 Kotlin 上傳文件的示例代碼

    這篇文章主要介紹了Spring Boot 與 Kotlin 上傳文件的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java中多種循環(huán)Map的常見方式詳解

    Java中多種循環(huán)Map的常見方式詳解

    Java中的Map是一種鍵值對存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu),其中每個(gè)鍵都唯一,與一個(gè)值相關(guān)聯(lián),下面這篇文章主要給大家介紹了關(guān)于Java中多種循環(huán)Map的常見方式,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-01-01

最新評(píng)論