SpringBoot實(shí)現(xiàn)發(fā)送電子郵件
1. 前言
電子郵件是—種用電子手段提供信息交換的通信方式,是互聯(lián)網(wǎng)應(yīng)用最廣的服務(wù)。通過(guò)網(wǎng)絡(luò)的電子郵件系統(tǒng),用戶可以非??焖俚姆绞剑◣酌腌娭畠?nèi)可以發(fā)送到世界上任何指定的目的地),與世界上任何一個(gè)角落的網(wǎng)絡(luò)用戶聯(lián)系。從1969年10月世界上的第一封電子郵件發(fā)出,到2021年,已經(jīng)過(guò)去將近半個(gè)世紀(jì)了。雖然即時(shí)通訊和視頻會(huì)議變得日益普及,但電子郵件依然有著廣泛的使用場(chǎng)景和不可撼動(dòng)的歷史地位。
1.1 電子郵件發(fā)展史
起源:1969年10月世界上的第一封電子郵件是由計(jì)算機(jī)科學(xué)家Leonard K.教授發(fā)給他的同事的一條簡(jiǎn)短消息。這條消息只有兩個(gè)字母:“LO”。Leonard K.教授因此被稱為電子郵件之父。
雖然電子郵件是在70年代發(fā)明的,它卻是在80年才得以興起。到90年代中期,互聯(lián)網(wǎng)瀏覽器誕生,全球網(wǎng)民人數(shù)激增,電子郵件被廣為使用。
1.2 電子郵件原理
電子郵件在Internet
上發(fā)送和接收的原理可以很形象地用我們?nèi)粘I钪朽]寄包裹來(lái)形容:當(dāng)我們要寄一個(gè)包裹時(shí),我們首先要找到任何一個(gè)有這項(xiàng)業(yè)務(wù)的郵局,在填寫(xiě)完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的郵局,那么對(duì)方取包裹的時(shí)候就必須去這個(gè)郵局才能取出。同樣的,當(dāng)我們發(fā)送電子郵件時(shí),這封郵件是由郵件發(fā)送服務(wù)器(任何一個(gè)都可以)發(fā)出,并根據(jù)收信人的地址判斷對(duì)方的郵件接收服務(wù)器而將這封信發(fā)送到該服務(wù)器上,收信人要收取郵件也只能訪問(wèn)這個(gè)服務(wù)器才能完成。
1.3 電子郵件地址的構(gòu)成
電子郵件地址的格式由三部分組成。第一部分“USER”代表用戶信箱的賬號(hào),對(duì)于同一個(gè)郵件接收服務(wù)器來(lái)說(shuō),這個(gè)賬號(hào)必須是唯一的;第二部分“@”是分隔符;第三部分是用戶信箱的郵件接收服務(wù)器域名,用以標(biāo)志其所在的位置。
用戶標(biāo)識(shí)符+@+域名
其中:@是“at”的符號(hào),表示“在”的意思。
1.4 電子郵件傳輸協(xié)議
電子郵件需要在郵件客戶端和郵件服務(wù)器之間,以及兩個(gè)郵件服務(wù)器之間進(jìn)行郵件傳遞,那就必須要遵守一定的規(guī)則,這個(gè)規(guī)則就是郵件傳輸協(xié)議。
下面我們分別簡(jiǎn)單介紹幾種協(xié)議:
SMTP協(xié)議:全稱為Simple Mail Transfer Protocol
,簡(jiǎn)單郵件傳輸協(xié)議。它定義了郵件客戶端軟件和SMTP郵件服務(wù)器之間,以及兩臺(tái)SMTP郵件服務(wù)器之間的通信規(guī)則。
POP3協(xié)議:全稱為Post Office Protocol
,郵局協(xié)議。它定義了郵件客戶端軟件和POP3郵件服務(wù)器的通信規(guī)則。
IMAP協(xié)議:全稱為 Internet Message Access Protocol
,Internet消息訪問(wèn)協(xié)議,它是對(duì)POP3協(xié)議的一種擴(kuò)展,也是定義了郵件客戶端軟件和IMAP郵件服務(wù)器的通信規(guī)則。
2. 實(shí)現(xiàn)發(fā)送電子郵件
Java在發(fā)明之初,就開(kāi)始支持發(fā)送郵件,通過(guò)java mail包方式去操作郵件發(fā)送的內(nèi)容和協(xié)議,但是,這種發(fā)送方式稍微比較復(fù)雜,需要配置各種參數(shù)、協(xié)議、內(nèi)容,之后產(chǎn)生了Spring框架。Spring在java mail的基礎(chǔ)上進(jìn)行了一些封裝,使發(fā)送郵件的過(guò)程的復(fù)雜大大減少。SpringBoot Mail
在Spring Mail的基礎(chǔ)上,再次進(jìn)行一次封裝,使得發(fā)送郵件的便利度上,更為簡(jiǎn)單。下面我們就開(kāi)始SpringBoot實(shí)現(xiàn)發(fā)送郵件的編程之旅吧!
(1)準(zhǔn)備帳號(hào)
注冊(cè)發(fā)件郵箱并設(shè)置客戶端授權(quán)碼,這里以163免費(fèi)郵箱為例:
(2)構(gòu)建maven工程,添加郵件配置和依賴包
application.yml文件配置參數(shù):
spring: ? mail: ? ?? ?#郵箱配置 ? ? host: smtp.163.com ? ? #郵箱地址 ? ? username: manoninsight@163.com ? ? #SMTP授權(quán)密碼 ? ? password: LEDEYBCUHIIBXLPG ? ? properties: ? ? ? mail: ? ? ? ? smtp: ? ? ? ? ? socketFactory: ? ? ? ? ? ? class: javax.net.ssl.SSLSocketFactory ? ? default-encoding: utf-8
pom.xml依賴spring-boot-starter-mail模塊:
<dependency> ? ? <groupId>org.springframework.boot</groupId> ? ? <artifactId>spring-boot-starter-mail</artifactId> </dependency>
(3)代碼實(shí)現(xiàn)
@RestController public class MailController { ? ? @Autowired ? ? JavaMailSenderImpl javaMailSender; ? ? @RequestMapping("/mail") ? ? public String sendMail(){ ? ? ? ? SimpleMailMessage message = new SimpleMailMessage(); ? ? ? ? //郵件發(fā)送 ? ? ? ? message.setFrom("manoninsight@163.com"); ? ? ? ? //郵件接收,多個(gè)帳號(hào)用逗號(hào)分割 ? ? ? ? message.setTo("pps1208@126.com","420076360@qq.com"); ? ? ? ? //郵件主題 ? ? ? ? message.setSubject("公眾號(hào):碼農(nóng)洞見(jiàn)"); ? ? ? ? //郵件內(nèi)容 ? ? ? ? message.setText("你好,我是碼農(nóng)洞見(jiàn),歡迎大家關(guān)注!"); ? ? ? ? javaMailSender.send(message); ? ? ? ? return "郵件發(fā)送demo!"; ? ? } }
(4)測(cè)試結(jié)果,收到了電子郵件:
3. 碼農(nóng)來(lái)洞見(jiàn)
電子郵件溝通的方式屬于異步通信,與即時(shí)軟件有所區(qū)別,即時(shí)軟件盛行的當(dāng)下,仍然有很多人喜歡使用電子郵件,究竟是什么原因呢?歸結(jié)原因如下四點(diǎn):
- (1)電子郵件溝通具有儀式感,比如某些重要的活動(dòng)邀請(qǐng)或者信息通知
- (2)電子郵件溝通便于協(xié)作,發(fā)送電子郵件可以選擇抄送、密送、群發(fā)等。
- (3)電子郵件溝通記錄可查詢
- (4)電子郵件溝通要求內(nèi)容邏輯清晰,電子郵件一般不需要即時(shí)答復(fù),讓溝通的雙方有思考的時(shí)間
最后,電子郵箱作為互聯(lián)網(wǎng)早期出現(xiàn)的溝通工具,經(jīng)過(guò)不斷的迭代更新,與即時(shí)通訊工具之間已形成優(yōu)劣互補(bǔ),成為人們生活工作中必不可少的一部分。
到此這篇關(guān)于SpringBoot
實(shí)現(xiàn)發(fā)送電子郵件的文章就介紹到這了,更多相關(guān)SpringBoot發(fā)送電子郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用SpringBoot發(fā)送郵件的方法詳解
- SpringBoot整合郵件發(fā)送的四種方法
- SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件的三種方法案例詳解
- Springboot發(fā)送郵件功能的實(shí)現(xiàn)詳解
- SpringBoot實(shí)現(xiàn)發(fā)送QQ郵件的示例代碼
- SpringBoot?Mail郵件任務(wù)詳情
- SpringBoot?集成短信和郵件的配置示例詳解
- SpringBoot實(shí)現(xiàn)郵件發(fā)送的示例代碼
- SpringBoot實(shí)現(xiàn)發(fā)送郵件、發(fā)送微信公眾號(hào)推送功能
- Spring?Boot整合郵箱發(fā)送郵件實(shí)例
- SpringBoot整合JavaMail實(shí)現(xiàn)發(fā)郵件的項(xiàng)目實(shí)踐
相關(guān)文章
ThreadLocal使用案例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了ThreadLocal使用案例分析,需要的朋友可以參考下2017-08-08Mybatis之Mapper動(dòng)態(tài)代理實(shí)例解析
這篇文章主要介紹了Mybatis之Mapper動(dòng)態(tài)代理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08IDEA項(xiàng)目代碼上傳gitlab遠(yuǎn)程倉(cāng)庫(kù)過(guò)程圖解
這篇文章主要介紹了IDEA項(xiàng)目代碼上傳gitlab遠(yuǎn)程倉(cāng)庫(kù)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型
這篇文章主要介紹了淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12JDK、J2EE、J2SE、J2ME四個(gè)易混淆概念區(qū)分
這篇文章將向你詳細(xì)介紹JDK、J2EE、J2SE、J2ME的概念以及他們的關(guān)系區(qū)別。2015-09-09Spring Cloud Config RSA簡(jiǎn)介及使用RSA加密配置文件的方法
Spring Cloud 為開(kāi)發(fā)人員提供了一系列的工具來(lái)快速構(gòu)建分布式系統(tǒng)的通用模型 。本文重點(diǎn)給大家介紹Spring Cloud Config RSA簡(jiǎn)介及使用RSA加密配置文件的方法,感興趣的朋友跟隨腳步之家小編一起學(xué)習(xí)吧2018-05-05