SpringBoot實現發送電子郵件

1. 前言

電子郵件是—種用電子手段提供信息交換的通信方式,是互聯網應用最廣的服務。通過網絡的電子郵件系統,用戶可以非常快速的方式(幾秒鐘之內可以發送到世界上任何指定的目的地),與世界上任何一個角落的網絡用戶聯系。從1969年10月世界上的第一封電子郵件發出,到2021年,已經過去將近半個世紀瞭。雖然即時通訊和視頻會議變得日益普及,但電子郵件依然有著廣泛的使用場景和不可撼動的歷史地位。

1.1 電子郵件發展史

起源:1969年10月世界上的第一封電子郵件是由計算機科學傢Leonard K.教授發給他的同事的一條簡短消息。這條消息隻有兩個字母:“LO”。Leonard K.教授因此被稱為電子郵件之父。
雖然電子郵件是在70年代發明的,它卻是在80年才得以興起。到90年代中期,互聯網瀏覽器誕生,全球網民人數激增,電子郵件被廣為使用。

1.2 電子郵件原理

電子郵件在Internet上發送和接收的原理可以很形象地用我們日常生活中郵寄包裹來形容:當我們要寄一個包裹時,我們首先要找到任何一個有這項業務的郵局,在填寫完收件人姓名、地址等等之後包裹就寄出而到瞭收件人所在地的郵局,那麼對方取包裹的時候就必須去這個郵局才能取出。同樣的,當我們發送電子郵件時,這封郵件是由郵件發送服務器(任何一個都可以)發出,並根據收信人的地址判斷對方的郵件接收服務器而將這封信發送到該服務器上,收信人要收取郵件也隻能訪問這個服務器才能完成。

1.3 電子郵件地址的構成

電子郵件地址的格式由三部分組成。第一部分“USER”代表用戶信箱的賬號,對於同一個郵件接收服務器來說,這個賬號必須是唯一的;第二部分“@”是分隔符;第三部分是用戶信箱的郵件接收服務器域名,用以標志其所在的位置。

用戶標識符+@+域名

其中:@是“at”的符號,表示“在”的意思。

1.4 電子郵件傳輸協議

電子郵件需要在郵件客戶端和郵件服務器之間,以及兩個郵件服務器之間進行郵件傳遞,那就必須要遵守一定的規則,這個規則就是郵件傳輸協議。

下面我們分別簡單介紹幾種協議:

SMTP協議:全稱為Simple Mail Transfer Protocol,簡單郵件傳輸協議。它定義瞭郵件客戶端軟件和SMTP郵件服務器之間,以及兩臺SMTP郵件服務器之間的通信規則。
POP3協議:全稱為Post Office Protocol,郵局協議。它定義瞭郵件客戶端軟件和POP3郵件服務器的通信規則。
IMAP協議:全稱為 Internet Message Access Protocol,Internet消息訪問協議,它是對POP3協議的一種擴展,也是定義瞭郵件客戶端軟件和IMAP郵件服務器的通信規則。

2. 實現發送電子郵件

Java在發明之初,就開始支持發送郵件,通過java mail包方式去操作郵件發送的內容和協議,但是,這種發送方式稍微比較復雜,需要配置各種參數、協議、內容,之後產生瞭Spring框架。Spring在java mail的基礎上進行瞭一些封裝,使發送郵件的過程的復雜大大減少。SpringBoot Mail在Spring Mail的基礎上,再次進行一次封裝,使得發送郵件的便利度上,更為簡單。下面我們就開始SpringBoot實現發送郵件的編程之旅吧!

(1)準備帳號

註冊發件郵箱並設置客戶端授權碼,這裡以163免費郵箱為例:

在這裡插入圖片描述

(2)構建maven工程,添加郵件配置和依賴包

application.yml文件配置參數:

spring:
  mail:
      #郵箱配置
    host: smtp.163.com
    #郵箱地址
    username: [email protected]
    #SMTP授權密碼
    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)代碼實現

@RestController
public class MailController {
    @Autowired
    JavaMailSenderImpl javaMailSender;
    @RequestMapping("/mail")
    public String sendMail(){
        SimpleMailMessage message = new SimpleMailMessage();
        //郵件發送
        message.setFrom("[email protected]");
        //郵件接收,多個帳號用逗號分割
        message.setTo("[email protected]","[email protected]");
        //郵件主題
        message.setSubject("公眾號:碼農洞見");
        //郵件內容
        message.setText("你好,我是碼農洞見,歡迎大傢關註!");
        javaMailSender.send(message);
        return "郵件發送demo!";
    }
}

(4)測試結果,收到瞭電子郵件:

在這裡插入圖片描述

3. 碼農來洞見

電子郵件溝通的方式屬於異步通信,與即時軟件有所區別,即時軟件盛行的當下,仍然有很多人喜歡使用電子郵件,究竟是什麼原因呢?歸結原因如下四點:

  • (1)電子郵件溝通具有儀式感,比如某些重要的活動邀請或者信息通知
  • (2)電子郵件溝通便於協作,發送電子郵件可以選擇抄送、密送、群發等。
  • (3)電子郵件溝通記錄可查詢
  • (4)電子郵件溝通要求內容邏輯清晰,電子郵件一般不需要即時答復,讓溝通的雙方有思考的時間

最後,電子郵箱作為互聯網早期出現的溝通工具,經過不斷的迭代更新,與即時通訊工具之間已形成優劣互補,成為人們生活工作中必不可少的一部分。

到此這篇關於SpringBoot實現發送電子郵件的文章就介紹到這瞭,更多相關SpringBoot發送電子郵件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: