通过AWS SES发送批量邮件

时间:2018-01-15 13:41:23

标签: java amazon-web-services email amazon-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.5 GB的数据传输。

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

有人可以通过Java AWS SDK为我提供样本吗?我想在每个目标上添加List-Unsubscribe标头。这是我实际上被卡住的地方。无法找到为每个目标添加自定义电子邮件标头的任何方法。这是可以使用BulkTemplateEmail吗?

非常感谢任何信息。

1 个答案:

答案 0 :(得分:1)

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

Amazon SES pricing

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

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