テスト開発をしている中でテストしにくいものの中にメール送信があります。
テストデータの中に間違って本番ユーザのメールアドレスがあった場合には、取り返しのつかない事故が発生してしまう可能性もあります。
そんな危険を回避しつつテストしやすくしてくれるのがmailtrapというWebサービスです。
実際にどんなことができるかというとSMTPでメールを送信しても実際の宛先には飛ばさず、WebサイトやAPIから確認することができるというサービスです。
Laravelの初期.env.localにも記載されているのでLaravelユーザにはお馴染みなのかもしれませんね。
それでは使ってみましょう。
ユーザ登録
Webサービスですのでまずはユーザ登録です。
メールアドレスとパスワードだけという必要最低限の情報ですので安心ですね。
サインインが終わると確認用のメールが飛んできますのでリンクをクリックしたら登録完了です。
設定
ログインすると以下のような画面になります。
Inboxes一覧が表示されますが無料プラン場合、Inboxesの上限は1つになります。
個人の開発テスト用ぐらいなら受信して確認後、すぐに破棄すると思いますので特に問題にならないと思います。(僕はなっていません)
プログラム側の準備
Inboxesのなかから既に作成されているDemo InboxをクリックするとInboxの詳細が表示されます。
SMTPのHOSTやAUTHのログインID、パスワードなどの情報が表示されますのでプログラム側でconfig等に記述しましょう。
各言語のフレームワークを使っている場合は、Integrationsのプルダウンから使用しているフレームワークを選択するとconfigの記述が表示されます。
ラインナップは充実しているのでよほどニッチなものじゃなければ存在すると思います。
選択後、configにコピペしてください。
送信された内容の確認
設定が完了したら送信してみましょう。
送信先アドレスには送信されず、mailtrap上で内容が確認できます。
添付ファイルやhtmlメールも確認できるのでとても便利です。
終わりに
Webサービスの使用が禁止されているなどmailtrapが使えない場合にはmailcatcherというものがあります。
こちらもお勧めです。
メールはユーザ登録完了や購入完了など上手く作らないとテストがしにくいのに、クリティカルな部分に含まれるケースが多くあります。
配信事故なども防げますしぜひ活用してみてください。