學(xué)AI,好工作 就找北大青鳥(niǎo)
關(guān)注小青 聽(tīng)課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

教你三步使用SpringBoot開(kāi)發(fā)郵件系統(tǒng)

來(lái)源:北大青鳥(niǎo)總部 2023年03月06日 10:13

摘要: 今天這篇文章就會(huì)手把手帶著同學(xué)們?nèi)绾螌?shí)現(xiàn)一個(gè)自己的郵件發(fā)送系統(tǒng)。以后再也不用擔(dān)心女朋友不接你電話了...

提到發(fā)送郵件相信大家都不陌生,那么作為一個(gè)程序猿,除了日常的工作要使用郵件之外,可能還有一個(gè)專屬于程序猿的使用郵件場(chǎng)景-郵件系統(tǒng)開(kāi)發(fā),我們不僅僅使用郵件,還開(kāi)發(fā)郵件。

大家應(yīng)該經(jīng)常會(huì)有這種經(jīng)歷,當(dāng)我們?cè)谝恍┢脚_(tái)使用郵箱注冊(cè)賬號(hào)或者在綁定郵箱的的時(shí)候,通常都會(huì)有一個(gè)郵箱驗(yàn)證激活的步驟。這個(gè)驗(yàn)證郵箱的步驟,就是在你注冊(cè)的時(shí)候,平臺(tái)會(huì)給你的郵箱發(fā)送一封驗(yàn)證郵件。

今天這篇文章就會(huì)手把手帶著同學(xué)們?nèi)绾螌?shí)現(xiàn)一個(gè)自己的郵件發(fā)送系統(tǒng)。以后再也不用擔(dān)心女朋友不接你電話了...



為什么大家都愛(ài)使用郵件?

因?yàn)楸阋税。。。?/span>

因?yàn)楸阋税。。。?/span>

因?yàn)楸阋税。。。?/span>

重要的事情說(shuō)三遍!??!


電子郵件的產(chǎn)生

世界上的第一封電子郵件是在1969年10月由計(jì)算機(jī)科學(xué)家LeonardK.教授發(fā)給他的同事的一條簡(jiǎn)短消息。據(jù)說(shuō)是"LO",意思是:"你好!"。Java在誕生之初就支持郵件發(fā)送,但是比較麻煩,已經(jīng)沒(méi)有人在用了;后期Spring框架在Java發(fā)送郵件的基礎(chǔ)之上又進(jìn)行了封裝,才使得郵件的發(fā)送開(kāi)始變的的簡(jiǎn)單,而今天咱么用的都不是以上兩種方式,而是使用·完成郵件發(fā)送;因?yàn)槭褂肧pringBoot比以上兩種方式還要簡(jiǎn)單。


郵件發(fā)送三步走

在開(kāi)始實(shí)現(xiàn)發(fā)送郵件的功能之前,我們先來(lái)說(shuō)一下發(fā)送郵件的原理,遵循著宋丹丹老師給我們總結(jié)的大象裝冰箱的經(jīng)典三步法,我們的郵件發(fā)送也可以總結(jié)成三個(gè)步驟。

第一步:(把冰箱門打開(kāi))

發(fā)件人將郵件發(fā)送到郵件發(fā)送服務(wù)器(發(fā)送方的郵件服務(wù)器,如果發(fā)送方是qq郵箱,郵件發(fā)送服務(wù)器就是qq郵箱服務(wù)器;如果發(fā)送方是163郵箱,郵件發(fā)送服務(wù)器就是163郵箱服務(wù)器)

第二步:(把大象裝進(jìn)去)

郵件發(fā)送服務(wù)器會(huì)將郵件發(fā)送到郵件接收服務(wù)器(同理,如果收件方是qq郵箱,郵件接收服務(wù)器就是qq郵箱服務(wù)器;如果接收方是163郵箱,郵件接收服務(wù)器就是163郵箱服務(wù)器)

第三步:(把冰箱門蓋上)

郵件接收服務(wù)器會(huì)將接收到的郵件發(fā)送給收件人



  • 郵件傳輸協(xié)議

作為一個(gè)勤學(xué)好問(wèn)的程序猿,我們當(dāng)然也要了解下郵件發(fā)送的協(xié)議,這個(gè)是關(guān)乎郵件發(fā)送的最根本的內(nèi)容。

在上述郵件發(fā)送的過(guò)程中,郵件客戶端和郵件服務(wù)器之間,以及兩個(gè)郵件服務(wù)器之間進(jìn)行郵件傳遞,是要遵守一定的規(guī)則,這個(gè)規(guī)則就是郵件傳輸協(xié)議。常見(jiàn)的電子郵件協(xié)議SMTP、POP3、IMAP,它們都隸屬于TCP/IP協(xié)議族,默認(rèn)狀態(tài)下,分別通過(guò)TCP端口25、110和143建立連接。下面分別對(duì)其進(jìn)行簡(jiǎn)單介紹。


    • SMTP協(xié)議

    • SMTP的全稱是“Simple Mail Transfer Protocol”,即"簡(jiǎn)單郵件傳輸協(xié)議"。它是一組用于從源地址到目的地址傳輸郵件的規(guī)范,通過(guò)它來(lái)控制郵件的中轉(zhuǎn)方式

    • POP協(xié)議

    • POP全稱是 Post Office Protocol,郵局協(xié)議。它定義了郵件客戶端軟件和POP3郵件服務(wù)器的通信規(guī)則。

    • IMAP

    • IMAP全稱是 Internet Message Access Protocol,Internet消息訪問(wèn)協(xié)議,它是對(duì)POP3協(xié)議的一種擴(kuò)展,也是定義了郵件客戶端軟件和IMAP郵件服務(wù)器的通信規(guī)則

  • 準(zhǔn)備工作
    這次的案例咱么使用163郵箱來(lái)給qq郵箱發(fā)送郵件,所有要準(zhǔn)備好連個(gè)郵箱xxx@163.com、xxx@qq.com,這兩個(gè)郵箱一個(gè)是發(fā)送方,一個(gè)是接受方。


  • 配置郵箱授權(quán)碼

我們?cè)谑褂脩?yīng)用程序發(fā)送郵件的是時(shí)候,其實(shí)就是想要當(dāng)于是用客戶端發(fā)送郵件,所以我們要在發(fā)送人的郵箱設(shè)置開(kāi)啟客戶端操作,默認(rèn)是關(guān)閉,這個(gè)只需要在發(fā)送方的郵箱了設(shè)置下就可以了。



在這個(gè)過(guò)程中會(huì)提示你發(fā)送短信,按照給短信內(nèi)容使用自己綁定的手機(jī)號(hào)發(fā)送即可,然后可以自己輸入授權(quán)碼,自己設(shè)置的授權(quán)碼要記住,以后發(fā)送郵件都要用到。



  • 發(fā)送郵件

好了,到這里該準(zhǔn)備的都準(zhǔn)備好了,接下來(lái)就開(kāi)干了。

首先,使用SpringInitializr初始化器,創(chuàng)建最基礎(chǔ)的SpringBoot工程讓后添加發(fā)送郵件的依賴項(xiàng)。

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


接下來(lái)就要配置郵箱相關(guān)的屬性配置,application.properties中添加郵件相關(guān)配置。

# 163服務(wù)器

spring.mail.host=smtp.163.com

#發(fā)件人郵箱

spring.mail.username=wyliboyu@163.com

#我們自己設(shè)置的授權(quán)密碼

spring.mail.password=ming438434

#默認(rèn)端口是25

spring.mail.port=25

#使用smtp協(xié)議

spring.mail.protocol=smtp

spring.mail.default-encoding=UTF-8

最后就是最簡(jiǎn)單的發(fā)送郵的代碼

/**

*發(fā)送簡(jiǎn)單郵件

*

*@throws Exception

*/

@Test

publicvoidsendMailTest()throwsException{

//簡(jiǎn)單郵件

SimpleMailMessage simpleMailMessage = newSimpleMailMessage();

// 發(fā)件人昵稱

Stringnick = MimeUtility.encodeText("課工場(chǎng)");

// 發(fā)件人郵箱 simpleMailMessage.setFrom(String.valueOf(newInternetAddress(nick+ "<"+ "wyliboyu@163.com"+ ">")));

// 收件人

simpleMailMessage.setTo("459829618@qq.com");

simpleMailMessage.setSubject("這是一封秘密郵件?。?!");

//4.設(shè)置郵件內(nèi)容

simpleMailMessage.setText("");

mailSender.send(simpleMailMessage);

System.out.println("郵件發(fā)送成功....");

}


這里有一個(gè)小問(wèn)題,如果你在你的收件箱看不到郵件的話,可以去垃圾郵件箱看看,因?yàn)橄到y(tǒng)很可能是把它當(dāng)作了垃圾郵件。

沒(méi)想到這么簡(jiǎn)單就搞定了一個(gè)了郵件發(fā)送的系統(tǒng),是不是很簡(jiǎn)單呢,同時(shí)大家也應(yīng)該了解到SpringBoot的強(qiáng)大了吧


標(biāo)簽: springboot
熱門班型時(shí)間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計(jì)全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開(kāi)發(fā)全能班 爆滿開(kāi)班
網(wǎng)絡(luò)安全運(yùn)營(yíng)班 爆滿開(kāi)班
報(bào)名優(yōu)惠
免費(fèi)試聽(tīng)
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接