在SpringBoot中使用AWS SDK實現郵箱驗證碼服務

1.依賴導入(maven)

        <dependency><groupId>software.amazon.awssdk</groupId><artifactId>ses</artifactId><version>2.31.46</version></dependency>

2.申請兩個key + 發件人郵箱需要驗證:

aws.aws_access_key_id
aws_secret_access_key

3.生成隨機6位驗證碼

    // 生成隨機驗證碼(6位數字)public String generateVerificationCode() {return String.format("%06d", new java.util.Random().nextInt(999999));}

4.通過構造函數注入依賴,并綁定兩個key和region

public EmailVerificationService(@Value("${cloud.aws.region.static:xx}") String region, @Value("${aws.aws_access_key_id:xx}") String ACCESS_KEY, @Value("${aws_secret_access_key:xx}") String SECRET_KEY) {this.sesClient = SesClient.builder().region(Region.of(region)).credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(ACCESS_KEY, SECRET_KEY))).build();}

5.發送驗證碼

// 發送驗證碼郵件public void sendVerificationCode(String recipientEmail) {String verificationCode = generateVerificationCode();// 構建郵件內容String subject = "您的驗證碼";String htmlBody = "<h3>您的驗證碼是: " + verificationCode + "</h3>"+ "<p>請在5分鐘內使用,此驗證碼有效期10分鐘</p>";try {// 創建郵件請求SendEmailRequest request = SendEmailRequest.builder().source(SENDER_EMAIL).destination(Destination.builder().toAddresses(recipientEmail).build()).message(Message.builder().subject(Content.builder().charset("UTF-8").data(subject).build()).body(Body.builder().html(Content.builder().charset("UTF-8").data(htmlBody).build()).build()).build()).build();// 發送郵件sesClient.sendEmail(request);System.out.println("驗證碼已發送至: " + recipientEmail);} catch (SesException e) {System.err.println("郵件發送失敗: " + e.awsErrorDetails().errorMessage());throw new RuntimeException("郵件發送失敗", e);}

6.發完后shutdown

 finally {emailService.shutdown();}// 關閉客戶端public void shutdown() {sesClient.close();}

7.效果如圖

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84011.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84011.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零到一:Maven 快速入門教程

目錄 Maven 簡介Maven 是什么為什么使用 Maven&#xff1f; 安裝 Maven下載 Maven 配置 Maven解壓文件配置本地倉庫保存路徑配置國內倉庫地址 Maven 的核心概念了解 pom.xml 文件坐標依賴范圍生命周期compileprovidedruntimetestsystemimport 依賴傳遞依賴排除依賴循環 繼承1. …

Java-39 深入淺出 Spring - AOP切面增強 核心概念 通知類型 XML+注解方式 附代碼

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI煉丹日志-28 - Aud…

第四講:類和對象(下)

1. 再探構造函數 ? 之前我們實現構造函數時&#xff0c;初始化成員變量主要使?函數體內賦值&#xff0c;構造函數初始化還有?種? 式&#xff0c;就是初始化列表&#xff0c;初始化列表的使??式是以?個冒號開始&#xff0c;接著是?個以逗號分隔的數據成 員列表&#xff…

linux 安裝mysql8.0;支持國產麒麟,統信uos系統

一&#xff1a;使用我已經改好的mysql linux mysql8.0解壓可用&#xff0c;點我下載 也在國產麒麟系統&#xff0c;統信uos系統也測試過&#xff0c;可用&#xff1b; 下載后&#xff0c;上傳mysql.tar.gz 然后使用root角色去執行幾個命令即可&#xff1b;數據庫密碼&#xf…

音頻剪輯軟件少之又少好用

我們平時見到的圖片以及視頻編輯工具非常多&#xff0c;但是音頻剪輯軟件卻是少之又少&#xff0c;更不用說有沒有好用的&#xff0c;今天&#xff0c;給大家帶來一款非常專業的音頻剪輯軟件&#xff0c;而且是會員喔。 軟件簡介 一款手機號登錄即可以享受會員的超專業音頻剪…

論文閱讀:CLIP:Learning Transferable Visual Models From Natural Language Supervision

從自然語言監督中學習可遷移的視覺模型 雖然有點data/gpu is all you need的味道&#xff0c;但是整體實驗和談論豐富度上還是很多的&#xff0c;非常長的原文和超級多的實驗討論&#xff0c;隔著屏幕感受到了實驗的工作量之大。 Abstract 最先進的計算機視覺系統被訓練來預測…

第9篇:數據庫中間件的容錯機制與高可用架構設計

9.1 為什么數據庫中間件需要容錯與高可用設計&#xff1f; 隨著系統復雜性增加&#xff0c;數據庫中間件不僅承載 SQL 路由、分片、事務控制等核心職責&#xff0c;也成為系統的 單點風險源。 為確保系統 724 小時穩定運行&#xff0c;中間件必須具備&#xff1a; 自動故障檢測…

c#壓縮與解壓縮-SharpCompress

SharpCompress SharpCompress 是一個開源項目庫&#xff0c;能夠處理文件。c#庫對于壓縮已經有很多&#xff0c;可以隨意選擇&#xff0c;看了SharpCompress感覺比較簡潔&#xff0c;還是介紹給大家。 項目地址&#xff1a; sharpcompress 項目使用 引入nuget包&#xff1…

Go中的協程并發和并發panic處理

1 協程基礎 1.1 協程定義&#xff08;Goroutine&#xff09; 概念&#xff1a;Go 語言特有的輕量級線程&#xff0c;由 Go 運行時&#xff08;runtime&#xff09;管理&#xff0c;相比系統線程&#xff08;Thread&#xff09;&#xff0c;創建和銷毀成本極低&#xff0c;占用…

性能優化筆記

性能優化轉載 https://www.cnblogs.com/tengzijian/p/17858112.html 性能優化的一般策略及方法 簡言之&#xff0c;非必要&#xff0c;不優化。先保證良好的設計&#xff0c;編寫易于理解和修改的整潔代碼。如果現有的代碼很糟糕&#xff0c;先清理重構&#xff0c;然后再考…

frida簡介及環境搭建

frida簡介及環境搭建 一、frida簡介二、frida環境搭建一、frida簡介 frida是一款輕量級的Hook框架,也可以說是一種動態插樁工具,可以插入一些原生代碼到原生app的內存空間去,動態地監視和修改器行為,這些原生平臺可以是Win、Mac、Linux、Android或者iOS。 frida分為兩個部…

Python實例題:Python計算微積分

目錄 Python實例題 題目 代碼實現 實現原理 符號計算&#xff1a; 數值計算&#xff1a; 可視化功能&#xff1a; 關鍵代碼解析 1. 導數計算 2. 積分計算 3. 微分方程求解 4. 函數圖像繪制 使用說明 安裝依賴&#xff1a; 基本用法&#xff1a; 示例輸出&#…

Mybatis 攔截器 與 PageHelper 源碼解析

Mybatis 攔截器 與 PageHelper 源碼解析 一、MyBatis插件機制的設計思想二、Interceptor接口核心解析2.1 核心方法2.2 Intercepts、Signature 注解2.3 自定義攔截器 三、PageHelper 介紹3.1 使用姿勢3.2 參數與返回值3.3 使用小細節 四、PageHelper 核心源碼解析4.1 分頁入口&a…

Linux中 SONAME 的作用

?? 一、從 -lexample 到 SONAME ? 假設你有以下文件結構: /libexample.so → libexample.so.1 /libexample.so.1 → libexample.so.1.0.0 /libexample.so.1.0.0 # SONAME: libexample.so.1/libexample.so.2 → libexample.so.2.0.0 /libexample.so.2.0…

熱門消息中間件匯總

文章目錄 前言RabbitMQ基本介紹核心特性適用場景 Kafka基本介紹核心特性適用場景 RocketMQ基本介紹核心特性適用場景 NATS基本介紹核心特性適用場景 總結選型建議與未來趨勢選型建議未來趨勢 結語 前言 大家后&#xff0c;我是沛哥兒。作為技術領域的老濕機&#xff0c;在消息…

【DAY42】Grad-CAM與Hook函數

內容來自浙大疏錦行python打卡訓練營 浙大疏錦行 知識點: 回調函數lambda函數hook函數的模塊鉤子和張量鉤子Grad-CAM的示例 作業&#xff1a;理解下今天的代碼即可 在深度學習中&#xff0c;我們經常需要查看或修改模型中間層的輸出或梯度。然而&#xff0c;標準的前向傳播和反…

C++032(static變量)

static變量 static變量是靜態存儲變量&#xff0c;定義變量時系統就會為其分配固定的存儲單元&#xff0c;直至整個程序運行結束。之前我們接觸過的全局變量即為static變量&#xff0c;它們存放在靜態存儲區中。使用static關鍵字&#xff0c;可將變量聲明成static變量。例如&a…

N元語言模型 —— 一文講懂!!!

目錄 引言 一. 基本知識 二.參數估計 三.數據平滑 一.加1法 二.減值法/折扣法 ?編輯 1.Good-Turing 估計 ?編輯 2.Back-off (后備/后退)方法 3.絕對減值法 ?編輯4.線性減值法 5.比較 三.刪除插值法(Deleted interpolation) 四.模型自適應 引言 本章節講的…

SpringAI Alibaba實戰文生圖

1?? 前置準備&#xff1a;搭建開發環境與服務配置&#x1f680; &#x1f527; 1.1 環境要求 JDK 17&#xff08;推薦 JDK 21&#xff09;、Spring Boot 3.x&#xff08;本案例使用 3.3.4&#xff09;、阿里云百煉大模型服務 API Key。需在阿里云控制臺完成服務開通并獲取有…

實戰二:開發網頁端界面完成黑白視頻轉為彩色視頻

?一、需求描述 設計一個簡單的視頻上色應用&#xff0c;用戶可以通過網頁界面上傳黑白視頻&#xff0c;系統會自動將其轉換為彩色視頻。整個過程對用戶來說非常簡單直觀&#xff0c;不需要了解技術細節。 效果圖 ?二、實現思路 總體思路&#xff1a; 用戶通過Gradio界面上…