kawamurakazushi
11/22/2017 - 6:01 AM

メール機能の実装

メール機能の実装

メール送信機能を作成する。

Railsでメール送信機能を作成する。 メールサービス Amazon SES を使用する。

事前に準備が必要なもの。

  • AWSのaccess_key_idとaccess_secret_key

config/secrets.yml

default: &default
  aws_access_key_id: <YOUR_AWS_ACCESS_KEY>
  aws_secret_access_key: <YOUR_AWS_SECRET_ACCESS_KEY>

AWS SESのgemをインストールする。

# Gemfile.rb
gem 'aws-ses', '~> 0.6'

intializerでActionMailerの設定をする。 ここで、aws_access_key_idとaws_secret_access_keyを入力する。

config/initializer/aws.rb

ActionMailer::Base.add_delivery_method :ses,
  AWS::SES::Base,
  access_key_id: Rails.application.secrets.aws_access_key_id,
  secret_access_key: Rails.application.secrets.aws_secret_access_key,
  server: 'email.us-west-2.amazonaws.com'

次に、application.rbdeliver_methodを設定する。 今回はAWS SESを使用するので:sesを代入する。

application.rb

    config.action_mailer.delivery_method = :ses

ActionMailerを作成する。

rails g mailer NotificationMailer

生成されたActionMailerにテスト用のメソッドを作成する。

NotificationMailer.rb

class NotificationMailer < ApplicationMailer

  default from: 'no-reply@yourdomain.com'

  def notify_url
    mail to: 'kawamura@yourdomain.com', subject: 'Test'
  end
end

メールの送信が可能か確認する。

$ rails c
> NotificationMailer.notify_url.deliver_now

送信機能は完了。

次に、deliver_laterの実装をする。

sidekiqのインストール

gem 'sidekiq'

config/sidekiq.yml

:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - default
  - mailers
:daemon: true

sidekiqを実行する

bundle exec sidekiq -C config/sidekiq.yml 

サーバー側の設定

デプロイの設定