Spring Boot實(shí)戰(zhàn)之發(fā)送郵件示例代碼
一、郵件服務(wù)簡介
郵件服務(wù)在互聯(lián)網(wǎng)早期就已經(jīng)出現(xiàn),如今已成為人們互聯(lián)網(wǎng)生活中必不可少的一項(xiàng)服務(wù)。那么郵件服務(wù)是怎么工作的呢?如下給出郵件發(fā)送與接收的典型過程:
1、發(fā)件人使用SMTP協(xié)議傳輸郵件到郵件服務(wù)器A;
2、郵件服務(wù)器A根據(jù)郵件中指定的接收者,投送郵件至相應(yīng)的郵件服務(wù)器B;
3、收件人使用POP3協(xié)議從郵件服務(wù)器B接收郵件。
SMTP(Simple Mail Transfer Protocol)是電子郵件(email)傳輸?shù)幕ヂ?lián)網(wǎng)標(biāo)準(zhǔn),定義在RFC5321,默認(rèn)使用端口25;
POP3(Post Office Protocol - Version 3)主要用于支持使用客戶端遠(yuǎn)程管理在服務(wù)器上的電子郵件。定義在RFC 1939,為POP協(xié)議的第三版(最新版)。
這兩個(gè)協(xié)議均屬于TCP/IP協(xié)議族的應(yīng)用層協(xié)議,運(yùn)行在TCP層之上。
我們?nèi)粘J瞻l(fā)郵件使用的客戶端、Web Mail的背后都在運(yùn)行著這兩個(gè)協(xié)議,完成收發(fā)郵件的過程。而現(xiàn)在我們需要使用SMTP協(xié)議來把發(fā)送給用戶的郵件傳輸?shù)洁]件服務(wù)器。
從客戶端傳輸郵件到服務(wù)器需要雙方的配合,而規(guī)則就定義在SMTP協(xié)議中。我們現(xiàn)在需要做的是找一個(gè)SMTP服務(wù)器,再實(shí)現(xiàn)一個(gè)SMTP客戶端,然后讓客戶端發(fā)送郵件到服務(wù)器。
二、配置郵件服務(wù)器
本文使用126郵箱測試,在以下界面中開啟smtp服務(wù)器,設(shè)置授權(quán)碼,在后面代碼中會(huì)使用到
三、實(shí)現(xiàn)郵件客戶端
1)修改pom.xml,添加依賴庫
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2)修改application.properties,添加郵箱配置
spring.mail.host=smtp.126.com spring.mail.username=****@126.com spring.mail.password=password #上面獲取設(shè)置的授權(quán)碼 spring.mail.default-encoding=UTF-8
3)新增MailController
package com.xiaofangtech.sunt.controller; import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.xiaofangtech.sunt.utils.ResultMsg; import com.xiaofangtech.sunt.utils.ResultStatusCode; @RestController @RequestMapping("mail") public class MailController { @Autowired JavaMailSender mailSender; @RequestMapping("sendemail") public Object sendEmail() { try { final MimeMessage mimeMessage = this.mailSender.createMimeMessage(); final MimeMessageHelper message = new MimeMessageHelper(mimeMessage); message.setFrom("****@126.com"); message.setTo("****@example.com"); message.setSubject("測試郵件主題"); message.setText("測試郵件內(nèi)容"); this.mailSender.send(mimeMessage); ResultMsg resultMsg = new ResultMsg(ResultStatusCode.OK.getErrcode(), ResultStatusCode.OK.getErrmsg(), null); return resultMsg; } catch(Exception ex) { ResultMsg resultMsg = new ResultMsg(ResultStatusCode.SYSTEM_ERR.getErrcode(), ResultStatusCode.SYSTEM_ERR.getErrmsg(), null); return resultMsg; } } }
4)運(yùn)行測試
瀏覽器中輸入
http://localhost:8080/mail/sendemail
查看郵箱可以收到剛發(fā)送的郵件
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot使用FreeMarker模板發(fā)送郵件
- SpringBoot集成E-mail發(fā)送各種類型郵件
- SpringBoot實(shí)現(xiàn)發(fā)送郵件功能
- SpringBoot發(fā)送郵件功能 驗(yàn)證碼5分鐘過期
- 基于SpringBoot實(shí)現(xiàn)發(fā)送帶附件的郵件
- Spring Boot整合郵件發(fā)送與注意事項(xiàng)
- Spring Boot中利用JavaMailSender發(fā)送郵件的方法示例(附源碼)
- Spring Boot實(shí)現(xiàn)郵件發(fā)送功能
- Springboot實(shí)現(xiàn)郵件發(fā)送功能
- SpringBoot實(shí)現(xiàn)郵件發(fā)送功能的姿勢分享
相關(guān)文章
SpringBoot+Vue前后端分離實(shí)現(xiàn)審核功能的示例
在實(shí)際開發(fā)中,審核功能是一個(gè)非常常用的功能,本文就來介紹一下使用SpringBoot+Vue前后端分離實(shí)現(xiàn)審核功能的示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02Java利用for循環(huán)打印菱形的實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Java利用for循環(huán)打印菱形的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Java利用讀寫的方式實(shí)現(xiàn)音頻播放代碼實(shí)例
這篇文章主要介紹了Java利用讀寫的方式實(shí)現(xiàn)音頻播放代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Spring Cloud Eureka服務(wù)治理的實(shí)現(xiàn)
服務(wù)治理是微服務(wù)框架中最為核心和基礎(chǔ)的模塊,它主要是用來實(shí)現(xiàn)各個(gè)微服務(wù)實(shí)例的自動(dòng)化注冊與發(fā)現(xiàn)。這篇文章主要介紹了Spring Cloud Eureka服務(wù)治理的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2018-06-06IntelliJ IDEA版Postman強(qiáng)大功能介紹
這篇文章主要為大家介紹了IDEA版Postman的強(qiáng)大功能介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06SpringBoot整合Elasticsearch實(shí)現(xiàn)索引和文檔的操作方法
Elasticsearch 基于 Apache Lucene 構(gòu)建,采用 Java 編寫,并使用 Lucene 構(gòu)建索引、提供搜索功能,本文分步驟通過綜合案例給大家分享SpringBoot整合Elasticsearch的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧2021-05-05詳解Spring Cloud Consul 實(shí)現(xiàn)服務(wù)注冊和發(fā)現(xiàn)
這篇文章主要介紹了Spring Cloud Consul 實(shí)現(xiàn)服務(wù)注冊和發(fā)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03kafka生產(chǎn)者發(fā)送消息流程深入分析講解
本文將介紹kafka的一條消息的發(fā)送流程,從消息的發(fā)送到服務(wù)端的存儲(chǔ)。上文說到kafak分為客戶端與服務(wù)端,要發(fā)送消息就涉及到了網(wǎng)絡(luò)通訊,kafka采用TCP協(xié)議進(jìn)行客戶端與服務(wù)端的通訊協(xié)議2023-03-03