メール送信のテストに mailtrap.io がとてもよい

6th Sep, 2013 (Updated on 4th Mar, 2016) | development

Quipper、日本オフィスができて半年以上達ち、このブログでも改めて色々発信してみようと思ってはいるのだけど、一度間が空いてしまったブログの再開はなかなか難しい(本人以外誰も気にしていない現実を知りつつ)。この状況を打破するために、軽いのをまず書いてみる。本当はQuipperの開発について色々書きたいんだけど、それはまた次回。

最近出会った mailtrap.io というサービスがWebシステム開発にとてもいい感じなので紹介してみる。

メール送信は、ある程度テストを自動化したとしても、繰り返し、手で実行して目で確認することも多い。テストするときは、送信先アドレスを自分にして、送信して、自分のメールボックスを開いて確認する、とか。めんどくさい。何か問題を発見したら、関係者にメールをフォワード、とかもめんどくさい。ステージング環境では実際に送らずに、ログに出すという方法もあるけど、これだと、開発者ではない人には使いにくい。開発者であっても、何か問題があったら、それをコピペして、issue管理システムに貼る、とかめんどくさい上にレイアウトも崩れがち。

この mailtrap.io というサービスでは、これらのめんどくささからある程度解放してくれる。このサービスは "Fake SMTP server for development teams to test" と書いてあるまんまで、SMTPサーバのように動くのだけど、実際にはメールを送信せずにそのサービスに溜まっていき、送ったメールの内容をWeb UIから見ることができるサービス。

Quipperでも、ステージングサーバーに入れて使っている。実際に使ってみると使い勝手がかなり良くて、

  1. 一通一通にpermanent linkができるので、issue管理システムとかチャットとかで、共有しやすい。
  2. HTMLメールとかも普通に見える。
  3. 貯めてある状態からワンクリックでメールを実際に送信することもできる。「実際のメールソフトで見てみたい」というときにも便利に使える。
  4. どんな 宛先(to)でも送ることができるので、テスト環境で作った適当なデータでもちゃんとメールの送信のテストができる。
  5. UIがとても簡単。Gmailみたいな感じで誰にでも簡単に使える。ステージング環境でテストするのは開発者だけではないので、誰でも簡単に使えるというのはとても重要。

などなど。

設定方法は、単純にSMTPの口が提供されるだけなので、それを設定するだけ。Quipperでは、Railsアプリには config/initializers/mailtrap.rb みたいのを置いている。 (herokuを主に使っているので、設定はENV経由)

if ENV['MAILTRAP_HOST'].present?

   ActionMailer::Base.smtp_settings = {
     address:              ENV['MAILTRAP_HOST'],
     authentication:       :plain,
     enable_starttls_auto: true,
     password:             ENV['MAILTRAP_PASSWORD'],
     port:                 ENV['MAILTRAP_PORT'],
     user_name:            ENV['MAILTRAP_USER_NAME'],
   }

   Mail.defaults do
     delivery_method :smtp, ActionMailer::Base.smtp_settings
   end

 end

このサービス、今のところ無料。「メインのビジネスじゃないから」らしい。