You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS Java API(SES)发送带模板参数的自定义验证邮件

完善AWS SES自定义验证邮件发送的Java测试代码

我来帮你补全这段测试代码,同时梳理几个关键的技术细节,确保你的自定义验证邮件能正常发送:

完整的测试代码示例

import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder;
import com.amazonaws.services.simpleemail.model.SendCustomVerificationEmailRequest;
import com.amazonaws.services.simpleemail.model.SendCustomVerificationEmailResult;
import com.amazonaws.services.simpleemail.model.AmazonSimpleEmailServiceException;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

public class SesCustomVerificationEmailTest {

    // 初始化SES客户端:默认会从环境变量、IAM角色或AWS配置文件加载凭证
    private final AmazonSimpleEmailService sesClient = AmazonSimpleEmailServiceClientBuilder.defaultClient();

    @Test
    @DisplayName("send custom verification email")
    void sendCustomVerificationEmail() {
        // 构建请求对象
        SendCustomVerificationEmailRequest verificationRequest = new SendCustomVerificationEmailRequest();
        verificationRequest.setEmailAddress("contact@company.com");
        verificationRequest.setTemplateName("MyMailTemplate");

        // 可选:如果模板有自定义参数,传入JSON格式的参数数据
        // verificationRequest.setTemplateData("{\"companyName\": \"Your Company\"}");
        // 可选:绑定配置集用于邮件追踪
        // verificationRequest.setConfigurationSetName("YourTrackingConfigSet");

        try {
            // 发送验证邮件
            SendCustomVerificationEmailResult result = sesClient.sendCustomVerificationEmail(verificationRequest);
            System.out.println("验证邮件发送成功,消息ID:" + result.getMessageId());
        } catch (AmazonSimpleEmailServiceException e) {
            // 处理SES服务端异常,比如模板不存在、权限不足、邮箱已验证等
            System.err.println("发送验证邮件失败:" + e.getErrorMessage());
            System.err.println("错误代码:" + e.getErrorCode());
            // 抛出异常让测试用例标记为失败
            throw e;
        }
    }
}

必须注意的技术细节

  • 模板前置要求:你指定的MyMailTemplate必须已经在AWS SES中创建完成,而且模板内容必须包含{{VerifyLink}}占位符——这是SES生成验证链接的固定变量,缺失的话用户无法完成邮箱验证。
  • 权限与凭证:运行测试的身份(IAM用户/角色)必须拥有ses:SendCustomVerificationEmail权限,同时确保AWS凭证已正确配置(比如本地开发用~/.aws/credentials,服务器用IAM角色)。
  • 邮箱限制规则:自定义验证邮件只能发给未通过SES验证的邮箱,且单个邮箱24小时内最多接收5次验证邮件,超出会被限流。
  • 自定义模板参数:如果你的模板里有自定义变量(比如{{companyName}}),可以通过setTemplateData传入JSON格式的键值对,SES会自动替换模板中的变量。
  • 异常场景处理:常见的异常包括模板不存在、邮箱格式错误、权限不足、邮箱已验证等,捕获AmazonSimpleEmailServiceException后可以根据错误代码做针对性处理。

内容的提问来源于stack exchange,提问作者jrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:55:12