Help us understand the problem. What is going on with this article?

【Rails】ActionMailer + AWS SES

はじめに

Rails アプリケーションからユーザーへメールを飛ばす方法としてAWS SESというサービスがあるので、こちらの使い方を説明させていただきます。
設定方法なので知っていればすぐにできるんですが、知らなければやり方を見つけるだけでかなり時間がかかってしまうと思います。
時間短縮の一助になれば嬉しいです。

関連リンク

Gmailを用いたActionMailerの使い方についても下記に載せておくので、必要であれば参考にしてください。。

アプリケーション作成

以下の項目については、上記の"Gmailを用いた ActionMailer の使い方"と同様となるため、そちらをご参照ください。

  • Mailer作成コマンド(rails g mailer ~)
  • Mailer
  • Controller
  • View

ドメイン関連

下記リンク先をご参照ください。

IAMユーザーの作成

下記リンク先をご参照ください。

config / yaml設定

config/development.rb
  # ActionMailer Setting with AWS SES
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_caching = true
  config.action_mailer.default_url_options = { host: Rails.application.secrets.host }
  ActionMailer::Base.smtp_settings = {
      :address =>        Rails.application.secrets.address,
      :port =>           587,
      :domain =>         Rails.application.secrets.domain,
      :authentication => :login,
      :user_name =>      Rails.application.secrets.access_key_id,
      :password =>       Rails.application.secrets.secret_access_key
  }
config/production.rb
  # ActionMailer Setting with AWS SES
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_caching = true
  config.action_mailer.default_url_options = { host: Rails.application.secrets.host }
  ActionMailer::Base.smtp_settings = {
      :address =>        Rails.application.secrets.address,
      :port =>           587,
      :domain =>         Rails.application.secrets.domain,
      :authentication => :login,
      :user_name =>      Rails.application.secrets.access_key_id,
      :password =>       Rails.application.secrets.secret_access_key
  }
secret.yml
development:
  host:              ec2-*****.ap-northeast-1.compute.amazonaws.com  # EC2インスタンス の パブリック DNS (IPv4) を入力する。
  access_key_id:     A******************A                            # 上記で取得した値
  secret_access_key: B******************************************B    # 上記で取得した値
  address:           email-smtp.us-east-1.amazonaws.com              # 自身が仕様しているリージョン
  domain:            c*****.com                                      # 上記で取得した値

production:
  host:              <%= ENV['AWS_HOST'] %>               # ElasticBeanstalk を使う場合、環境変数へ入力する。
  access_key_id:     <%= ENV['AWS_ACCESS_KEY_ID'] %>      # ElasticBeanstalk を使う場合、環境変数へ入力する。
  secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>  # ElasticBeanstalk を使う場合、環境変数へ入力する。
  address:           <%= ENV['AWS_ADDRESS'] %>            # ElasticBeanstalk を使う場合、環境変数へ入力する。
  domain:            <%= ENV['AWS_DOMAIN'] %>             # ElasticBeanstalk を使う場合、環境変数へ入力する。

まとめ

今回、ドメインを取得するところもAWSのサービスを使って説明をさせていただきましたが、ドメイン取得については他のサービスを使ったほうがコストが低いケースもありますので、あくまで一例とさせていただきます。
個人的には色々なサービスを使うよりもAWSでまとめて管理できるほうが管理コストも含めると安いのではないかなーと思ったりします。
お好きな方法で取り組んでいただけたらなと思います。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした