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.效果如圖