国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot進(jìn)階教程(七十八)郵件服務(wù)

這篇具有很好參考價值的文章主要介紹了SpringBoot進(jìn)階教程(七十八)郵件服務(wù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Sun公司提供了JavaMail用來實現(xiàn)郵件發(fā)送,但是配置煩瑣,Spring中提供了JavaMailSender用來簡化郵件配置,Spring Boot則提供了MailSenderAutoConfiguration對郵件的發(fā)送做了進(jìn)一步簡化。

v準(zhǔn)備工作

開通POP3/SMTP服務(wù)或者IMAP/SMTP服務(wù)

使用郵箱發(fā)送郵件,首先要申請開通POP3/SMTP服務(wù)或者IMAP/SMTP服務(wù)。SMTP全稱為Simple Mail Transfer Protocol,譯作簡單郵件傳輸協(xié)議,它定義了郵件客戶端軟件與SMTP服務(wù)器之間,以及SMTP服務(wù)器與SMTP服務(wù)器之間的通信規(guī)則。

我使用的是QQ郵箱,若你也使用QQ郵箱,可以參考下面截圖。當(dāng)然我也試了其它郵箱,開通方法大同小異。

SpringBoot進(jìn)階教程(七十八)郵件服務(wù)

v架構(gòu)搭建

maven依賴
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
郵箱配置
server.port=8300
#郵箱配置
#平臺地址,這里用的是qq郵箱,使用其他郵箱請更換
spring.mail.host=smtp.qq.com
#端口號
spring.mail.port=587
#發(fā)送郵件的郵箱地址:改成自己的郵箱
spring.mail.username=123456@qq.com
#注意這里不是郵件的登錄密碼,是發(fā)送短信后它給你的授權(quán)碼 填寫到這里
spring.mail.password=xxxxxxxxx
#與發(fā)件郵箱一致
spring.mail.from=123456@qq.com
調(diào)用JavaMailSender接口發(fā)送郵件

由于Spring Boot的starter模塊提供了自動化配置,所以在引入了spring-boot-starter-mail依賴之后,會根據(jù)配置文件中的內(nèi)容去創(chuàng)建JavaMailSender實例,因此我們可以直接在需要使用的地方直接@Autowired來引入郵件發(fā)送對象。

EmailService

package com.test.service;

/**
 * @Author chen bo
 * @Date 2023/10
 * @Des
 */
public interface EmailService {
    /**
     * 發(fā)送文本郵件
     *
     * @param to      收件人
     * @param subject 主題
     * @param content 內(nèi)容
     */
    void sendSimpleMail(String to, String subject, String content);

    /**
     * 發(fā)送HTML郵件
     *
     * @param to      收件人
     * @param subject 主題
     * @param content 內(nèi)容
     */
    void sendHtmlMail(String to, String subject, String content);

    /**
     * 發(fā)送帶附件的郵件
     *
     * @param to       收件人
     * @param subject  主題
     * @param content  內(nèi)容
     * @param filePath 附件
     */
    void sendAttachmentsMail(String to, String subject, String content, String filePath);
}

EmailServiceImpl

/**
 * @Author chen bo
 * @Date 2023/10
 * @Des
 */
@Slf4j
@Service
public class EmailServiceImpl implements EmailService {
    /**
     * Spring Boot 提供了一個發(fā)送郵件的簡單抽象,使用的是下面這個接口,這里直接注入即可使用
     */
    @Autowired
    private JavaMailSender mailSender;

    /**
     * 配置文件中我的qq郵箱
     */
    @Value("${spring.mail.from}")
    private String from;

    /**
     * 簡單文本郵件
     * @param to 收件人
     * @param subject 主題
     * @param content 內(nèi)容
     */
    @Override
    public void sendSimpleMail(String to, String subject, String content) {
        //創(chuàng)建SimpleMailMessage對象
        SimpleMailMessage message = new SimpleMailMessage();
        //郵件發(fā)送人
        message.setFrom(from);
        //郵件接收人
        message.setTo(to);
        //郵件主題
        message.setSubject(subject);
        //郵件內(nèi)容
        message.setText(content);
        //發(fā)送郵件
        mailSender.send(message);
    }

    /**
     * html郵件
     * @param to 收件人,多個時參數(shù)形式 :"xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"
     * @param subject 主題
     * @param content 內(nèi)容
     */
    @Override
    public void sendHtmlMail(String to, String subject, String content) {
        //獲取MimeMessage對象
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper messageHelper;
        try {
            messageHelper = new MimeMessageHelper(message, true);
            //郵件發(fā)送人
            messageHelper.setFrom(from);
            //郵件接收人,設(shè)置多個收件人地址
            InternetAddress[] internetAddressTo = InternetAddress.parse(to);
            messageHelper.setTo(internetAddressTo);
            //messageHelper.setTo(to);
            //郵件主題
            message.setSubject(subject);
            //郵件內(nèi)容,html格式
            messageHelper.setText(content, true);
            //發(fā)送
            mailSender.send(message);
            //日志信息
            log.info("郵件已經(jīng)發(fā)送。");
        } catch (Exception e) {
            log.error("發(fā)送郵件時發(fā)生異常!", e);
        }
    }

    /**
     * 帶附件的郵件
     * @param to 收件人
     * @param subject 主題
     * @param content 內(nèi)容
     * @param filePath 附件
     */
    @Override
    public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
        MimeMessage message = mailSender.createMimeMessage();
        try {
            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);
            mailSender.send(message);
            //日志信息
            log.info("郵件已經(jīng)發(fā)送。");
        } catch (Exception e) {
            log.error("發(fā)送郵件時發(fā)生異常!", e);
        }
    }
}

EmailController

/**
 * @Author chen bo
 * @Date 2023/10
 * @Des
 */
@RestController
public class EmailController {
    @Autowired
    private EmailService emailService;
    @PostMapping("sendSimpleMail")
    public String sendSimpleMail(String to, String subject, String content) {
        emailService.sendSimpleMail(to, subject, content);
        return "Hi";
    }
}

postman請求

SpringBoot進(jìn)階教程(七十八)郵件服務(wù)

收到郵件

SpringBoot進(jìn)階教程(七十八)郵件服務(wù)

v源碼地址

https://github.com/toutouge/javademosecond/tree/master/hellolearn


作  者:請叫我頭頭哥
出  處:http://www.cnblogs.com/toutou/
關(guān)于作者:專注于基礎(chǔ)平臺的項目開發(fā)。如有問題或建議,請多多賜教!
版權(quán)聲明:本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復(fù)。也歡迎園子的大大們指正錯誤,共同進(jìn)步?;蛘咧苯铀叫盼?
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創(chuàng)和持續(xù)寫作的最大動力!
文章來源地址http://www.zghlxwxcb.cn/news/detail-747845.html

到了這里,關(guān)于SpringBoot進(jìn)階教程(七十八)郵件服務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot進(jìn)階(48):【實戰(zhàn)教程】SpringBoot集成WebSocket輕松實現(xiàn)實時消息推送

    Spring Boot進(jìn)階(48):【實戰(zhàn)教程】SpringBoot集成WebSocket輕松實現(xiàn)實時消息推送

    ????????WebSocket是一種新型的通信協(xié)議,它可以在客戶端與服務(wù)器端之間實現(xiàn)雙向通信,具有低延遲、高效性等特點,適用于實時通信場景。在SpringBoot應(yīng)用中,集成WebSocket可以方便地實現(xiàn)實時通信功能,如即時聊天、實時數(shù)據(jù)傳輸?shù)取?????????本文將介紹如何在Sprin

    2024年02月09日
    瀏覽(97)
  • aardio教程二) 進(jìn)階語法

    aardio中除了基礎(chǔ)數(shù)據(jù)類型外,其他的復(fù)合對象都是table(例如類和名字空間等)。table可以用來存放aardio的任何對象,包括另一個table。 在其他語言中的字典、列表、數(shù)組、集合映射等,在aardio中都使用table來實現(xiàn)。 創(chuàng)建字典 創(chuàng)建數(shù)組 數(shù)組和字典可以混用 使用class定義類

    2024年03月18日
    瀏覽(99)
  • kotlin教程4:函數(shù)進(jìn)階

    kotlin教程:編程基礎(chǔ)??數(shù)據(jù)結(jié)構(gòu)??面向?qū)ο?kotlin 的函數(shù)定義非常靈活,既可以按照順序傳參,也可以通過參數(shù)名傳參,而且可以設(shè)置參數(shù)默認(rèn)值,這些在基礎(chǔ)教程中已經(jīng)講過了。 此外, kotlin 中用 vararg 修飾的參數(shù),為長度可變的參數(shù)列表 遞歸是一種常用的編程技巧,就像

    2024年02月05日
    瀏覽(92)
  • Lua 進(jìn)階 · 教程筆記

    Lua 進(jìn)階 · 教程筆記

    筆記的內(nèi)容出自 Bilibili 上的視頻:Lua教程-進(jìn)階部分 - 4K超清【不定期更新】 筆記主要用于供筆者個人或讀者回顧知識點,如有紕漏,煩請指出 : ) 國內(nèi)的大佬 云風(fēng) 翻譯了 Lua 的 Api 參考手冊:傳送門【】 以后讀者在練習(xí)或者開發(fā)途中可以在參考手冊里查看 Lua 提供的 Api。

    2024年01月24日
    瀏覽(97)
  • SQL Server進(jìn)階教程讀書筆記

    最近把SQL Server進(jìn)階教程重新讀了一遍,順便整理了一下書本中的知識點 CASE WHEN ????????? 高手使用select做分支,新手用where和having做分支 ????????? 要寫ELSE,要寫END,避免未匹配上得到NULL ????????? check到底怎么用?? ????????????????在SQL Server中,s

    2024年02月09日
    瀏覽(89)
  • git 進(jìn)階系列教程--push

    功能介紹 將本地倉庫中的內(nèi)容同步到遠(yuǎn)程倉庫 指令解析 這個命令就上將本地倉庫中的文件同步到遠(yuǎn)程。是平時用到push最多的指令。它其實是一種簡寫方式。省略了遠(yuǎn)程倉庫的地址,本地分支。 這個命令是比較全的一條指令。意思是推送本地master分支到遠(yuǎn)程(origin)的master分支

    2024年02月14日
    瀏覽(126)
  • git 進(jìn)階系列教程--pull

    功能 從遠(yuǎn)程倉庫拉取最新代碼到本地 代碼解析 將遠(yuǎn)程倉庫代碼拉取到本地。當(dāng)然這個命令的前提是你本地代碼與遠(yuǎn)程代碼有鏈接,無論是你upstream也好git clone也罷。而且是默認(rèn)拉取遠(yuǎn)程代碼中與該分支有關(guān)聯(lián)的分支與本地該分支合并。同時,git pull不止是拉取代碼,同時會將

    2024年02月11日
    瀏覽(302)
  • git 進(jìn)階系列教程--add

    git 進(jìn)階系列教程--add

    功能介紹 將工作區(qū)(working directory)中的內(nèi)容放入暫存區(qū)(staging area) 追蹤文件(解釋:剛被添加到工作區(qū)的文件處于未跟蹤狀態(tài)(Untracked files),該命令會將新添加的文件放入暫存區(qū),并且文件將處于已跟蹤狀態(tài)) 命令解析 添加工作區(qū)所有文件進(jìn)入暫存區(qū) 最后的點可以理解為正則里的

    2024年02月06日
    瀏覽(98)
  • JavaScript高級教程(javascript實戰(zhàn)進(jìn)階)

    JavaScript高級教程(javascript實戰(zhàn)進(jìn)階)

    ? ? 分類: 基本數(shù)據(jù)(值)類型 String:任意字符串 Number:任意的數(shù)字 boolean:true/false undefined:undefined null:null 對象(引用)類型 Object:任意對象 Function:一種特別的對象(可以執(zhí)行) Array:一種特別的對象(數(shù)值下標(biāo),內(nèi)部數(shù)據(jù)是有序的) 判斷: typeof:可以判斷undef

    2024年02月07日
    瀏覽(105)
  • Docker基礎(chǔ)教程 - 14 Docker進(jìn)階

    請查看 Docker 進(jìn)階教程 。

    2024年03月17日
    瀏覽(96)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包