Rails 7でSMTPメールをAWS SESで送信する正しい方法(翻訳)
Ruby on RailsからAWS SES経由でメールを送信するためのAction Mailer設定方法を解説したブログ記事は山ほどありますが、私の知る限り、そのほとんどは間違っています。Google検索結果やStack Exchangeでトップに浮かび上がる記事には、動かないコードか、さもなければパスワードを平文で送信するコピペコードが含まれています。
(AWS SDKのAPIでメールを送信するのではなく、SMTP経由で送信する理由ですか?こんな依存関係地獄があるからです)
ともあれ、ジェフ・ベソスの年となった2024年に、問題なく動作することを私が確認できたコンフィグは以下のとおりです。
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
# リージョンによって変わる(例: "email-smtp.us-east-1.amazonaws.com")
address: ENV["AWS_SMTP_ENDPOINT"],
# SMTPユーザーを作成する:
user_name: ENV["AWS_SMTP_USERNAME"],
password: ENV["AWS_SMTP_PASSWORD"],
# STARTTLSで暗号化。参考: https://docs.aws.amazon.com/ses/latest/dg/smtp-connect.html
enable_starttls: true,
port: 587,
# :Loginは、認証パスワードをBase64でエンコードする
authentication: :login
}
上を自分のRailsアプリのproduction.rb
に書けば、ただちにメールが送信されるはずです。うまく動くのは気持ちいいですね。
お知らせ: 最新情報をチェックしたい方へ
ラッキーなことに、このWebサイトはRSSでもMastodonでも購読可能です。他の記事も読みたい方は、私のニュースレターにお申し込みいただければ、いい感じのエッセイを月イチで配信いたします。私が1人で運営しているポッドキャストもどうぞ。
概要
原著者の許諾を得て翻訳・公開いたします。
日本語タイトルは内容に即したものにしました。