MailtrapをLaravelの開発環境で使用する
Section: Technology

Mailtrapとは

Mailtrapとは公式サイトに書かれているように、ステージングと開発のための安全なメールのテストできるサービスです。無料版から三百ドルするものまで様々な価格のプランがあります。

Safe Email Testing for Staging & Development

Mailtrapが必要となる例

Laravelにはjetstream関連の認証等でメールを送信する機能があり、メールを送信するサーバが必要になります。開発中であるため、気軽にメールの送受信をしたいような場面です。

Ruby on Railsなどの他の言語やフレームワークでも同様に、メールの送受信等のテストをしたい場合、Mailtrapで開発環境でのテストを気軽に行えます。

SMTPサーバ

主には以下のSMTPサーバが挙げられます。

GmailのSMTPサーバの特徴

  • メールが実際に送信されるため、本番環境でも使用可
  • 複数の送信方法があったりして、少しややこしい

Mailtrapの仮想SMTPサーバの特徴

  • 架空のメールアドレスを使用する
  • WebサイトやAPIなどでメールの確認ができる
  • コピペするだけで簡単

以上の観点から開発環境ではMailtrapを使うと便利だと思います。

Mailtrapの使い方

サインアップ・登録

まずはじめに公式サイトに行きます。

このような画面が出るのでSign Up Nowをクリックし、Mailtrapのアカウント登録をします。

Google、Github、Office 365などのアカウントから簡単にアカウントをMailtrapの登録することができます。

プロジェクトとの統合

次にLaravelやRuby on RailsなどのプロジェクトとMailTrapの統合をします。

アカウントのログイン後、inboxes画面が表示されます。無料プランではInboxやProjectは一つしか使えません。

ProjectsのMy Inboxをクリックしてください。次のような画面が表示されます。

画面の左側にメールが届きます。

右側のSMTP SettingsのIntegrationsでプロジェクトとの統合を行います。ドロップダウンリストからプロジェクトの言語やフレームワークに合わせて選択すると、変更する情報を表示してくれます。

Laravelの場合、プロジェクトの .envというファイルのMAIL_MAILER等が同じように書かれているのでMailtrapの表示された情報に変更してください。

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=??????????
MAIL_PASSWORD=??????????
MAIL_ENCRYPTION=tls

自分が設定した際には以下のMAILに関する行もあり、残したまま実行すると送信者のメールアドレスが登録されていないというエラーが出たので、MAIL_FROM_ADDRESS=nullの部分を削除してエラー対処しました。

またMAIL_FROM_NAME="${APP_NAME}"の部分はそのままにしました。

MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

メールの使用

以下のように、Inbox画面の右側のEmail Address部分にメールアドレスが書かれています。こちらのメールアドレスを使うと、メールの受信ができます。受信したメールはInbox画面の左側に表示されます。無料プランではこの一つのメールアドレスのみ使うことができます。

まとめ

Mailtrapはコピペするだけでプロジェクトとの統合が完了し、簡単に導入できます。

無料プランではメールアドレスを一つしか使えないように、制限があります。複数のメールアドレスを使わないといけないような場合は、有料プランにするのもありだと思います。