使用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
相关产品推荐
相关产品推荐

