Posted at

RailsプロジェクトでSMTPサーバ持ってないけど、メール送信機能が正常に動作してるか確認したいとき!

More than 3 years have passed since last update.

SMTPの設定動作確認したいけど、、SMTPサーバ立てるのめんどい


しかももしかしたら開発中の機能で、、誤送信したらどうしよう....

そんなあなたに

mailcatcher を紹介します。


簡単に説明すると、docker上で稼働するSMTPサーバです。


ですが実際にはメールを外部に送信しません。mailcatcherがメールクライアントも兼ねてるので、ブラウザ上ですべてのメールを見ることが出来ます。


これ自体の使い方は、上記リンク先を見てください。


mailcatcherの準備

docker-compose.yml に以下の設定を追加します。


1080ポートはhttp用ポート


1025ポートはSMTP用ポート

  smtp:

image: schickling/mailcatcher
ports:
- "1080:1080"
- "1025:1025"

完成形はこちら

あとは実行するだけ

$ docker-compose up

これで

http://:1080

にアクセスしてみてください、WEB UIが表示されます。

スクリーンショット 2016-03-19 23.10.17.png

今はまだメール0件ですが、SMTP経由でメール送信するとここにたまります。


Railsからメール送信してみよう

railsのActionMailerを使ってますので、そのあたりの説明は省きます。


そしてSMTPの設定は下記の通りです。

# config/environments/development.rb

# Mail ocnfig
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { :address => "<docker host ip>", :port => 1025 }
config.action_mailer.raise_delivery_errors = true

あとは、実行するだけです。

mailcatcher.gif

こんな感じで確認できます。


開発時は、SMTPサーバも必要無いし、存在するメールアドレスに誤送信してしまうリスクもなくなります。