AWS SDK Java v2を使ってSESの一括送信を行う

SES(SimpleEmailService)のAPIを使って、メールの一括送信を行う。
利点

  • API呼び出しが回数を減らせる

注意点

  • 50件に1回の呼び出しが必要

  • Private VPCの場合、NATゲートウェイを使うことになる。(VPCエンドポイントがない)

やりかた

  • メールのテンプレートを作成する

E メールテンプレートの管理 - Amazon Simple Email Service

  • メール送信先毎に、BulkEmailEntryを作成する
// 宛先
Destination dest = Destination.builder()
        .toAddresses(/** 送信先 */)
        .build();
// テンプレート(置き換え内容)
ReplacementTemplate template = ReplacementTemplate.builder()
        .replacementTemplateData(/** JSONをStringにしたもの */)
        .build();
// コンテンツ
ReplacementEmailContent content = ReplacementEmailContent.builder()
        .replacementTemplate(template)
        .build();
// メール本体
BulkEmailEntry entry = BulkEmailEntry.builder()
        .destination(dest)
        .replacementEmailContent(content)
        .build();
  • 使用するテンプレートを指定
Template template = Template.builder()
        .templateName(/** テンプレートの名前 */)
        .templateData(/** BulkMailEntryのReplacementTemplateが設定されていなかった場合のReplacementTemplateData */)
        .build();
BulkEmailContent content = BulkEmailContent.builder()
        template(template)
        .build();
  • 50件毎に送信処理を行う
SendBulkEmailRequest bulkEmailRequest = SendBulkEmailRequest.builder()
        .bulkEmailEntries(/** BulkEmailEntryの実体 */)
        .defaultContent(/** BulkEmailContentの実体 */)
        .configurationSetName(/** SESに設定している送信設定の名前 */)
        .fromEmailAddress(/** fromアドレス */)
        .replyToAddresses(/** replyToアドレス */)
        .build();
SesV2Client sesv2Client = SesV2Client.builder()
        .region(Region.US_EAST_1)
        .build();
// 送信実行
SendBulkEmailResponse res = sesv2Client.sendBulkEmail(bulkEmailRequest);