Sending e-mail using AWS SES over SMTP with Rails 7
There are a bunch of blog posts telling you how to configure Action Mailer to send mail via AWS SES in Ruby on Rails, and as far as I can tell they're almost all wrong. The top posts on Google and Stack Exchange include copypasta that either don't work or would send your password in plaintext.
(Why am I sending over SMTP instead of the AWS SDK's API, you ask? Because dependency hell.)
Anyway, here is a configuration I can confirm that works fine in this, the year of our Bezos, 2024:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
# Will vary by region (e.g. "email-smtp.us-east-1.amazonaws.com")
address: ENV["AWS_SMTP_ENDPOINT"],
# Create an SMTP user: https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html
user_name: ENV["AWS_SMTP_USERNAME"],
password: ENV["AWS_SMTP_PASSWORD"],
# Encrypt via STARTTLS. See: https://docs.aws.amazon.com/ses/latest/dg/smtp-connect.html
enable_starttls: true,
port: 587,
# :Login authentication encodes the password in base64
authentication: :login
}
Slap that in your production.rb
and you should be slinging e-mails in no time.
Good times.