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が表示されます。
今はまだメール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
あとは、実行するだけです。
こんな感じで確認できます。
開発時は、SMTPサーバも必要無いし、存在するメールアドレスに誤送信してしまうリスクもなくなります。