当前位置: 首页 > news >正文

在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.lqws.cn/news/182791.html

相关文章:

  • AWS API Gateway配置日志
  • 强化学习基础概念图文版笔记
  • SpringCloud学习笔记-3
  • 《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
  • Python打卡DAY46
  • [论文阅读] 人工智能 | 利用负信号蒸馏:用REDI框架提升LLM推理能力
  • 基于tensorflow实现的猫狗识别
  • 程序代码篇---智能家居传感器
  • 用Cursor与Chrome插件爬取网页数据
  • CDN:静态资源如何加速?
  • 埃文科技智能数据引擎产品入选《中国网络安全细分领域产品名录》
  • Curtain MonGuard:智能水印颜色适配,提升屏幕信息安全
  • dfn序的应用 (P1273 有线电视网题解)
  • 12.vite,webpack构建工具
  • 大模型与 NLP、Transformer 架构
  • 第四章 信息系统管理-4.1 管理方法
  • ✅ 常用 Java HTTP 客户端汇总及使用示例
  • 【计算机网络】HTTP
  • 香港科技大学(广州) | 生命科学与生物医学工程学域博士夏令营报名召集!
  • EditPlus中.nut文件高亮--stx配置文件解释
  • 代码安全规范1.1
  • Day46
  • Ubuntu 系统.sh脚本一键部署内网Java服务(组件使用docker镜像,宕机自启动)
  • win10+TensorRT+OpenCV+Qt+YOLOV8模型部署教程
  • LeetCode 2434.使用机器人打印字典序最小的字符串:贪心(栈)——清晰题解
  • 短视频矩阵SaaS系统:开源部署与核心功能架构指南
  • 华为仓颉语言初识:并发编程之同步机制(上)
  • 20250606-C#知识:匿名函数、Lambda表达式与闭包
  • Java适配器模式深度解析:无缝集成不兼容系统的艺术
  • [BIOS]VSCode zx-6000 编译问题