java實現(xiàn)賬號登錄時發(fā)送郵件通知
1、引言
今天在逛Spring官網(wǎng)的時候,不經(jīng)意間在SpringBoot2.5.9的特性中看到了發(fā)送郵件的功能。


上面的第二張圖片就是發(fā)送郵件的相關(guān)說明文檔的頁面截圖,在這個部分開頭就說了:

Spring框架提供了一個發(fā)送郵件的接口JavaMailSender,并且提供了提供了其自動配置和starter模塊,聽著像是有一個專門的starter提供這個功能。

為了驗證自己的猜測,回到第一張圖的頁面,在依賴版本頁面通過Ctrl+F搜索一下是不是有名字帶mail的依賴。

通過mail關(guān)鍵字搜索到了14個匹配項,最后果然找到了名為spring-boot-starter-mail的依賴

2、實現(xiàn)功能
接下來,就通過Springboot項目引入這個依賴,來實現(xiàn)經(jīng)常會用到的賬號登錄的郵箱提醒功能。
第一步:創(chuàng)建一個springboot項目,項目名為email
第二步:修改pom.xml,添加spring-boot-starter-mail的依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>email</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<lombok.version>1.18.22</lombok.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>第三步:根據(jù)官網(wǎng)提供的代碼進行改進
回到Springboot2.5.9特性的頁面,點擊reference documentation查看郵件的具體說明

點擊了上面的鏈接進入了這個頁面,上面一大堆文字不用管,那個Liberary dependencies可以不用看,那個依賴加不加都不影響發(fā)送郵件。

在剛剛創(chuàng)建的項目的根目錄下創(chuàng)建controller包,新建一個LoginController類
package com.example.email.controller;
import com.example.email.config.EmailProperties;
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.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author heyunlin
* @version 1.0
*/
@RestController
public class LoginController {
private final JavaMailSender mailSender;
@Autowired
public LoginController(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
@GetMapping("/login")
public String login(String username, String password) {
// 定義日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
try {
if (password.equals("12345")) {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom("xxx@163.com"); // 設(shè)置發(fā)送方的郵箱,這個郵箱要和配置文件里設(shè)置的username一致,否則會報錯
helper.setTo(""); // 設(shè)置接收方郵箱,發(fā)送方和接收方可以是同一個郵箱。
helper.setText("您的賬號" + username + " " + LocalDateTime.now().format(formatter) + "在廣州登錄了。");
mailSender.send(message);
return "登錄成功";
} else {
return "登錄失敗,密碼不正確。";
}
} catch (MessagingException exception) {
exception.printStackTrace();
return "登錄失敗," + exception.getMessage();
}
}
}然后在applicatiom.yml中配置
server:
port: 8081
spring:
mail:
port: 25
host: smtp.163.com # 發(fā)送郵件的服務(wù)器地址
default-encoding: UTF-8
username: xxx@163.com # 你的郵箱
password: xxx # 這個是授權(quán)碼,不是郵箱的密碼,下面會介紹怎么去獲取注意,這里的password需要登錄自己的郵箱,通過修改郵箱設(shè)置來獲取,會在下一個章節(jié)介紹。
這篇文章用的是網(wǎng)易郵箱,其他郵箱類似。這里配置的host是發(fā)送郵件的服務(wù)器地址,百度一下,這個pop是接收郵件的服務(wù)器,smtp是發(fā)送郵件的服務(wù)器。

3、獲取授權(quán)碼

如上圖所示,登錄郵箱之后,點擊【設(shè)置】跳轉(zhuǎn)到郵箱設(shè)置頁面。

開啟這兩個服務(wù)中的一個就可以了,因為只需要用發(fā)送郵件的功能,也就是是SMTP服務(wù)。

點擊開啟按鈕

接著點繼續(xù)開啟

使用微信掃描二維碼,會自動打開發(fā)送短信的窗口,點發(fā)送就可以了,非常方便
發(fā)送短信之后,點擊我已發(fā)送,這時候會得到一個授權(quán)碼,因為博主已經(jīng)開啟過了,授權(quán)碼只會顯示一次,這次沒有顯示了。

4、測試發(fā)送郵件的功能
通過瀏覽器發(fā)送get請求,請求成功得到了響應(yīng)

郵箱也成功收到了郵件

以上就是java實現(xiàn)賬號登錄時發(fā)送郵件通知的詳細(xì)內(nèi)容,更多關(guān)于java郵件通知的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring Boot Starter 的應(yīng)用場景與自動配置方式
本文介紹了Spring Boot Starter的使用場景,如何自定義Starter以及Spring Boot自動配置原理,Spring Boot Starter解決了依賴導(dǎo)入和配置繁瑣的問題,通過自動配置類和xxxProperties類實現(xiàn)組件的自動注入和配置,感興趣的朋友一起看看吧2025-03-03
SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例
這篇文章主要介紹了SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
Spring中過濾器和攔截器的區(qū)別及具體實現(xiàn)方式
在Spring框架中,和都是用于處理 HTTP 請求的中間件,但它們在作用范圍、實現(xiàn)方式和生命周期上有顯著區(qū)別,本文給大家介紹Spring中過濾器和攔截器的區(qū)別及具體實現(xiàn),感興趣的朋友一起看看吧2025-07-07
Java Spring詳解如何配置數(shù)據(jù)源注解開發(fā)以及整合Junit
Spring 是目前主流的 Java Web 開發(fā)框架,是 Java 世界最為成功的框架。該框架是一個輕量級的開源框架,具有很高的凝聚力和吸引力,本篇文章帶你了解如何配置數(shù)據(jù)源、注解開發(fā)以及整合Junit2021-10-10
鴻蒙PC上搭建多語言開發(fā)環(huán)境Java/Python/Go/Rust配置完全指南
淺談SpringMVC HandlerInterceptor詭異問題排查

