Browse Source

LocalStack等本地开发环境试验 (from-email: sender@example.com 未验证 暂时发不出邮件 但通信正常)

zhangzl 2 months ago
parent
commit
5a46ba4ac3

+ 23 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/core/config/AwsSesConfig.java

@@ -7,6 +7,7 @@ import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
 import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
 import software.amazon.awssdk.regions.Region;
 import software.amazon.awssdk.services.ses.SesClient;
+import software.amazon.awssdk.services.ses.SesClientBuilder;
 
 /**
  * AWS SES配置类
@@ -43,6 +44,11 @@ public class AwsSesConfig {
     private String charset = "UTF-8";
     
     /**
+     * 端点URL (用于LocalStack等本地开发环境)
+     */
+    private String endpointUrl;
+    
+    /**
      * 创建SES客户端
      * 
      * @return SesClient实例
@@ -51,10 +57,16 @@ public class AwsSesConfig {
     public SesClient sesClient() {
         AwsBasicCredentials awsCreds = AwsBasicCredentials.create(accessKeyId, secretAccessKey);
         
-        return SesClient.builder()
+        SesClientBuilder builder = SesClient.builder()
                 .region(Region.of(region))
-                .credentialsProvider(StaticCredentialsProvider.create(awsCreds))
-                .build();
+                .credentialsProvider(StaticCredentialsProvider.create(awsCreds));
+        
+        // 如果配置了端点URL,则使用自定义端点(用于LocalStack)
+        if (endpointUrl != null && !endpointUrl.trim().isEmpty()) {
+            builder.endpointOverride(java.net.URI.create(endpointUrl));
+        }
+        
+        return builder.build();
     }
     
     // Getter和Setter方法
@@ -97,4 +109,12 @@ public class AwsSesConfig {
     public void setCharset(String charset) {
         this.charset = charset;
     }
+    
+    public String getEndpointUrl() {
+        return endpointUrl;
+    }
+    
+    public void setEndpointUrl(String endpointUrl) {
+        this.endpointUrl = endpointUrl;
+    }
 }

+ 8 - 6
ruoyi-admin/src/main/resources/application.yml

@@ -105,14 +105,16 @@ aws:
   ses:
     # AWS区域 (例如: us-east-1, ap-southeast-1)
     region: us-east-1
-    # AWS访问密钥ID
-    access-key-id: your-access-key-id
-    # AWS秘密访问密钥
-    secret-access-key: your-secret-access-key
-    # 发件人邮箱 (需要在AWS SES中验证过的邮箱)
-    from-email: noreply@yourdomain.com
+    # AWS访问密钥ID (LocalStack使用任意值)
+    access-key-id: test
+    # AWS秘密访问密钥 (LocalStack使用任意值)
+    secret-access-key: test
+    # 发件人邮箱 (LocalStack中任意邮箱都可用)
+    from-email: sender@example.com
     # 邮件编码
     charset: UTF-8
+    # LocalStack端点URL
+    endpoint-url: http://172.14.3.142:4566
 
 # MyBatis配置
 mybatis: