日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Spring Boot--- springboot 集成 JavaMail 实现邮箱认证

發布時間:2023/12/31 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot--- springboot 集成 JavaMail 实现邮箱认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:https://www.cnblogs.com/wushaopei/p/11979413.html
原創為注冊發送驗證碼,本文抽取了其中的發送工具類
一、JavaMail
1、什么是JavaMail?

JavaMail,顧名思義,提供給開發者處理 電子郵件相關的編程接口。它是Sun發布的用來處理email的API。它可以方便的執行一些常用的郵件傳輸。我們可以基于JavaMaiil開發出類似于 Microsoft Outlook的應用程序。

2、關于要使用JavaMail的原因?

基于現在WEB開發中對JavaMail的需求,例如:

用戶注冊后,網站發送一封激活郵件驗證;

用戶過生日,系統發送生日祝福郵件;

將最新活動和優惠以郵件的形式告知會員等等…

以上的需求都需要通過編程語言實現發送郵件功能,而JavaMail便能滿足這一需求。

3、電子郵箱及郵件服務器
什么是電子郵箱?

電子郵箱(E-mail 地址) 需要在郵件服務器上進行申請,確切的說,電子郵箱其實就是用戶在郵件服務器上申請的一個賬戶,用戶在郵件服務器上申請了一個賬號后,郵件服務器就會為這個賬號分配一定的空間,用戶從而可以使用這個賬號以及空間,發送電子郵件和保存別人發送過來的電子郵件。

什么是郵箱服務器?

服務器指的是一臺電腦安裝了一個服務器軟件,那么這臺電腦就可以稱為是WEB服務器,那么同樣的一臺電腦安裝了郵件服務器軟件,那么這臺電腦稱為是郵件服務器。

基于互聯網的電子郵件功能:

要在Internet上提供電子郵件功能,必須有專門的電子郵件服務器,例如目前網絡上提供郵件服務的廠商:新浪、搜狐、網易等等他們都有自己的郵件服務器。

4、郵件收發協議
(1)SMTP協議(發送郵件)

簡單郵件傳輸協議 (Simple Mail Transfer Protocol, SMTP) 是在Internet傳輸email的事實標準。(百度百科)

SMTP是一個相對簡單的基于文本的協議。在其之上指定了一條消息的一個或多個接收者(在大多數情況下被確認是存在的),然后消息文本會被傳輸。可以很簡單地通過telnet程序來測試一個SMTP服務器。SMTP使用TCP端口25。要為一個給定的域名決定一個SMTP服務器,需要使用MX (Mail eXchange) DNS。(百度百科)

用戶臉上郵件服務器后,要想給它發送一封電子郵件,需要遵循一定的通訊規則,SMTP協議就是用于定義這種規則的。因此,通常我們也把處理用戶SMTP請求(郵件發送請求)的郵件服務器稱之為SMTP服務器。

(2)POP3協議(接收郵件)

POP3,全名為“Post Office Protocol - Version 3”,即“郵局協議版本3”。是TCP/IP協議族中的一員,由RFC1939 定義。本協議主要用于支持使用客戶端遠程管理在服務器上的電子郵件。提供了SSL加密的POP3協議被稱為POP3S。(百度百科)

POP 協議支持“離線”郵件處理。其具體過程是:郵件發送到服務器上,電子郵件客戶端調用郵件客戶機程序以連接服務器,并下載所有未閱讀的電子郵件。這種離線訪問模式是一種存儲轉發服務,將郵件從郵件服務器端送到個人終端機器上,一般是PC機或 MAC。一旦郵件發送到 PC 機或MAC上,郵件服務器上的郵件將會被刪除。但目前的POP3郵件服務器大都可以“只下載郵件,服務器端并不刪除”,也就是改進的POP3協議。(百度百科)

同樣,用戶若想從郵件服務器管理的電子郵件中接受一封電子郵件的話,他臉上郵件服務器后,也需要遵循一定的通訊格式,POP3協議用于定義這種通訊格式。

因而,通常我們也把處理用戶POP3請求(郵件接受請求)的郵件服務器稱之為POP3服務器。

(3)郵件收發過程的介紹:

郵件的發送、接受,在客戶端軟件中,由SMTP服務器進行發送操作,接受是由POP3服務器進行接收。

1、郵件發送協議-SMTP,默認端口號25

用于把用戶郵件從一個服務器轉到下一個服務器

2、郵件接收協議-POP3,默認端口號110

用于支持使用客戶端遠程管理在服務器上的電子郵件

MailUtils.java

package com.example.utils;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component;import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.util.Properties;@Component public class MailUtils {@Autowiredprivate EmailConfig emailConfig;private final Logger logger = LoggerFactory.getLogger(MailUtils.class);/*** 發送郵件的方法* @Param to :給誰發郵件* @Param code : 郵件的激活碼* @Param subject : 主題* @Param text : 內容**/public void sendMail(String toEmail, String code,final String subject,final String text){try{//1、創建郵件對象JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();//2、發郵件人郵箱javaMailSender.setUsername(emailConfig.getUsername());//3、發郵件人郵箱密碼(默認使用客戶端的授權碼)javaMailSender.setPassword(emailConfig.getPassword());//4、設置郵件服務器主機名 SMTP服務器地址javaMailSender.setHost(emailConfig.getHost());//5、SMTP服務器: 默認端口javaMailSender.setPort(25);//6、//發送郵件協議名稱javaMailSender.setProtocol("smtp");//7、編碼格式javaMailSender.setDefaultEncoding("UTF-8");//8、創建連接對象,連接到郵箱服務器Properties mailProperties = new Properties();//發送服務器需要身份驗證,要采用指定用戶名密碼的方式去認證mailProperties.put("mail.smtp.auth", true);mailProperties.put("mail.smtp.starttls.enable", true);//9、添加連接對象到郵件對象中javaMailSender.setJavaMailProperties(mailProperties);int count = 1;//10、創建//可以發送幾封郵件:可以這里 for循環多次MimeMessage mimeMessage = getMimeMessage(toEmail,subject,text, javaMailSender);//11、發送郵件javaMailSender.send(mimeMessage);logger.info("發送 第"+ count + "封郵件" );count ++;logger.info("發往 "+toEmail+" 郵件發送成功");} catch (MessagingException e) {logger.error("發往 "+toEmail+" 郵件發送異常", e);}}//聲明一個Message對象(代表一封郵件),從session中創建private MimeMessage getMimeMessage(String toEmail,String subject,String text, JavaMailSenderImpl javaMailSender) throws MessagingException {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");//發件人mimeMessageHelper.setFrom(emailConfig.getSenderName());//收件人 : 可以發送給多個收件人,該方法有一個重載的 數組形參mimeMessageHelper.setTo(toEmail); // mimeMessage.setContent();//郵件主題mimeMessageHelper.setSubject(subject);//郵件內容mimeMessageHelper.setText(text, true);return mimeMessage;} }

調用

mailUtils.sendMail(email,user.getCode(),"來自郵箱測試接口郵件","<h1>來自wto網站激活郵件,激活請點擊以下鏈接:</h1><h3><a href='http://wj7ei8.natappfree.cc/regist_web/activateServlet?code="+user.getCode()+"'>http://wj7ei8.natappfree.cc/regist_web/activateServlet?code="+user.getCode()+"</a></h3>");

總結

以上是生活随笔為你收集整理的Spring Boot--- springboot 集成 JavaMail 实现邮箱认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。