Ruby

【Rails】メール送信環境の設定方法

Railsでアプリケーションの開発をしていると、メールの設定が必要となるケースは多いです。

データベースの設定情報は、config/database.ymlに設定すれば良いですが、メールサーバーの設定はどこに設定すれば良いか悩むこともあるかと思います。

そこで今回、環境変数にメールサーバー情報を設定する情報を紹介します。

メールサーバ情報の設定

メールを送信するためには、メールサーバーの情報を設定をする必要があります。

config/environments/xxx.rbに設定する方法もありますが、config/initializers配下に設定ファイルmailer.rbを作成して、メールサーバー情報の設定を管理すると便利です。

以下のように設定ファイルを作成して、各環境変数を設定してRails サーバーを再起動すれば完了です。

Rails.application.configure do
  config.action_mailer.default_url_options = { host: ENV['MAIL_HOST'],
                                               port: ENV['MAIL_PORT'] }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_caching = false
  config.action_mailer.smtp_settings = { address: ENV['SMTP_ADDRESS'],
                                         port: ENV['SMTP_PORT'],
                                         user_name: ENV['SMTP_USER_NAME'],
                                         password: ENV['SMTP_PASSWORD'],
                                       }
end

開発環境のメール環境にはMailCatcherが便利

本番環境ではGmailを使用するケースが多いかと思いますが、各開発環境ではMailCatcherを使用すると送信メールを確認することができます。

Dockerfileの例は以下のようになります。

FROM ruby:2.6.1-alpine3.9

ENV TZ=Asia/Tokyo

RUN set -xe \
    && apk add --no-cache \
        libstdc++ \
        sqlite-libs \
    && apk add --no-cache --virtual .build-deps \
        build-base \
        sqlite-dev \
    && gem install mailcatcher -v 0.6.5 -N \
    && apk del .build-deps

# smtp port
EXPOSE 1025

# webserver port
EXPOSE 1080

CMD ["mailcatcher", "--no-quit", "--foreground", "--ip=0.0.0.0"]

以下のようなコマンドで、MailCatcherを起動させることができます。(SMTPのポート番号は1025を設定)

送信メールは、ブラウザでhttp://localhost:1080にアクセスすることで確認することができます。

$ docker build -t mailcatcher:0.6.5-ruby2.6.1-alpine3.9 .
$ docker run -d --restart=always  --name mailcatcher -p 1025:1025 -p 1080:1080 mailcatcher:0.6.5-ruby2.6.1-alpine3.9

-Ruby

Copyright© てくてくライフ , 2021 All Rights Reserved.