Skip to content

Add support for configuration_set_name parameter in SES v2 #11

Description

@marckohlbrugge

Feature Request

Summary

The aws-actionmailer-ses gem's SES v2 implementation does not support passing configuration_set_name to the AWS SES v2 API, which is needed for event tracking, reputation monitoring, and delivery customization.

Current Behavior

The gem only passes content, from_email_address, and destination parameters to Aws::SESV2::Client#send_email:

# lib/aws/action_mailer/ses_v2/mailer.rb
def deliver!(message)
  params = { content: { raw: { data: message.to_s } } }
  params[:from_email_address] = from_email_address(message)
  params[:destination] = {
    to_addresses: to_addresses(message),
    cc_addresses: message.cc,
    bcc_addresses: message.bcc
  }

  @client.send_email(params)
end

Expected Behavior

The gem should support passing configuration_set_name to enable event tracking, similar to how it supports custom ARN headers.

Proposed Solution

Option 1: Global setting in ses_v2_settings

config.action_mailer.ses_v2_settings = {
  region: 'us-east-1',
  configuration_set_name: 'my-config-set'
}

Option 2: Per-mailer header (though this may not work with SES v2 API)

class MyMailer < ApplicationMailer
  default headers: { 'X-SES-CONFIGURATION-SET' => 'my-config-set' }
end

Option 3: Both
Support both global and per-message configuration sets, with per-message overriding global.

Workaround

Currently, the only workaround is to set a default configuration set on the verified identity in the AWS SES Console, which applies to ALL emails from that domain.

AWS SDK Reference

The AWS SDK for Ruby SESv2 Client supports configuration_set_name as a parameter:

client.send_email({
  configuration_set_name: "ConfigurationSetName",
  # ... other params
})

Use Case

Configuration sets are essential for:

  • Event tracking (bounces, complaints, deliveries, opens, clicks)
  • Reputation monitoring
  • Dedicated IP pool management
  • Custom MAIL FROM domains
  • Different tracking settings per email type (transactional vs marketing)

Impact

Without this feature, users cannot:

  • Track email events per mailer/email type
  • Use different IP pools for different email types
  • Have granular control over email delivery settings

Would appreciate support for this feature! Happy to contribute a PR if there's interest.

Metadata

Metadata

Assignees

Labels

closing-soonThis issue will automatically close in 4 days unless further comments are made.feature-requestNew feature or enhancement. May require GitHub community feedback.

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions