关于使用AWS SDK for Java v2通过AWS SES发送原始邮件的疑问
在AWS SDK for Java v2中发送原始邮件的解决方案
AWS SDK for Java v2没有移除发送原始邮件的功能,只是API结构与v1不同,且部分官方文档/示例存在版本混淆的问题。以下是具体的实现方式和说明:
核心实现逻辑
在v2中,发送原始邮件无需单独的SendRawEmail接口,而是通过SendEmail操作,将MIME格式的原始邮件内容封装为RawMessage对象传入请求即可。
代码示例
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ses.SesClient; import software.amazon.awssdk.services.ses.model.*; import java.nio.charset.StandardCharsets; public class SendRawSesEmailV2 { public static void main(String[] args) { // 初始化SES客户端 Region region = Region.US_EAST_1; SesClient sesClient = SesClient.builder() .region(region) .build(); // 构造符合MIME规范的原始邮件内容 String rawMimeEmail = "From: 发件人邮箱@example.com\r\n" + "To: 收件人邮箱@example.com\r\n" + "Subject: 测试原始邮件\r\n" + "Content-Type: text/plain; charset=UTF-8\r\n\r\n" + "这是通过AWS SES SDK v2发送的原始邮件内容。"; // 封装原始邮件为RawMessage对象 RawMessage rawMessage = RawMessage.builder() .data(rawMimeEmail.getBytes(StandardCharsets.UTF_8)) .build(); // 构建发送请求 SendEmailRequest sendEmailRequest = SendEmailRequest.builder() .source("发件人邮箱@example.com") .destination(dest -> dest.toAddresses("收件人邮箱@example.com")) .content(content -> content.raw(rawContent -> rawContent.data(rawMessage))) .build(); try { // 执行发送 sesClient.sendEmail(sendEmailRequest); System.out.println("原始邮件发送成功"); } catch (SesException e) { System.err.println("发送失败: " + e.awsErrorDetails().errorMessage()); System.exit(1); } finally { sesClient.close(); } } }
关于文档混淆的说明
- 部分标注为v2的官方示例存在版本错误,仍沿用了v1的
SendRawEmailRequest类,这是文档更新不及时导致的。 - AWS建议升级到v2是因为v2具备模块化设计、更好的性能、原生异步支持等优势,v1的核心功能在v2中均有对应实现,只是API形态做了优化调整,并非功能删减。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

