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