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

Spring Boot集成AWS SES v2发送带附件邮件的实现方法

问题根因

SES v2 Java SDK的API结构和v1版本完全不兼容,v1版本专属的SendRawEmailRequest类无法作为v2客户端sendEmail方法的入参,你代码里同时冗余了直连Office365 SMTP发信的无关逻辑,还存在类引用错误的问题。

修正步骤
  • 第一步:删除冗余的SMTP发信逻辑
    删掉代码中从Properties props = new Properties();开始到System.out.println("email sent");的整段逻辑,这段是直连Office365 SMTP服务发信的代码,和SES发信完全无关,留存还会暴露邮箱账号密码。
  • 第二步:替换为SES v2对应的请求构造逻辑
    所有SES相关的类统一从software.amazon.awssdk.services.sesv2.model包下导入,不要引入v1版本com.amazonaws.services.simpleemail.model下的同名类,核心发信逻辑替换为如下代码:
// 前面构造MimeMessage、组装附件和正文的逻辑保留,不需要修改
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
message.writeTo(outputStream);
SdkBytes data = SdkBytes.fromByteArray(outputStream.toByteArray());

// 构造v2版本的原始邮件请求
RawMessage rawMessage = RawMessage.builder()
        .data(data)
        .build();

EmailContent emailContent = EmailContent.builder()
        .raw(rawMessage)
        .build();

SendEmailRequest sendEmailRequest = SendEmailRequest.builder()
        .content(emailContent)
        .build();

// 调用v2客户端发信
client.sendEmail(sendEmailRequest);
其他注意事项
  • 确保项目中引入的是SES v2的官方依赖,不要和v1版本的SES SDK共存,避免类引用冲突,v2 Maven依赖坐标为software.amazon.awssdk:sesv2。
  • 你代码中附件的MIME类型配置错误:当前上传的是csv格式文件,MIME类型应该设置为text/csv,你写的application/vnd.openxmlformats-officedocument.spreadsheetml.sheet是xlsx格式的对应类型,会导致收件人下载附件后格式识别异常。
  • 发信前确认SES客户端初始化的区域、访问凭证配置正确,发信地址已在SES控制台完成身份验证;如果你的SES账号还在沙箱环境中,收件地址也需要提前完成验证才能正常发信。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:42:17