通过 AWS SES 批量发送邮件

Bulk Mail Sending Through AWS SES

我正在使用 Amazon AWS SES 发送我的电子邮件活动。我的名单上有大约 35,000 名订阅者。目前我正在使用类似于以下的代码。

for (Entry<Integer, String> emailEntry : email_ids.entrySet()) {
        MimeMessage msg = getMimeMessage(emailEntry.getKey(), emailEntry.getValue());
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                msg.writeTo(outputStream);
        RawMessage rawMessage = new RawMessage(ByteBuffer.wrap(outputStream.toByteArray()));

        ses.sendRawEmail(new SendRawEmailRequest(rawMessage));
    }

这样我就可以按照我想要的方式向所有订阅者发送电子邮件。但是数据传输有一个巨大的账单会计。每个 MimeMessage 的大小为 150Kb,将其发送给 35,000 个订阅者会导致 5.5GB 的数据传输。

所以我决定在我的应用程序中使用 BulkTemplateEmail,创建一次模板并将其发送到 35,000 封电子邮件。这样,电子邮件只需发送到 SES 一次,并且在数据传输方面会有显着的收益。

任何人都可以通过 Java AWS SDK 为我提供一个示例吗?我想在每个目的地添加 List-Unsubscribe header。这就是我真正被困的地方。找不到任何方法来为每个目的地添加自定义电子邮件 header。这可以用 BulkTemplateEmail 实现吗?

非常感谢任何信息。

使用 SES 发送电子邮件时,亚马逊会收取数据传出费用。当前价格为每 GB 0.12 美元。对于大量电子邮件,这可能会产生严重的费用。

Amazon SES pricing

对于嵌入图像、附件等,另一种解决方案是使用链接而不是嵌入对象。通过这种方式,您可以减轻和减少数据传输费用。这可能会对大量电子邮件从未打开过的电子邮件活动产生中度到高度的影响,从而节省数据传输费用。

如果您的链接引用了您 EC2 实例上的文件,请记住您仍然需要为 EC2 实例的数据输出付费。 S3 将提供更低的成本。