LoginSignup
3
3

Laravel のメール送信テストに Mailtrap を利用する

Posted at

とある Laravel リポジトリのローカル開発環境で何故かメールが送信できず、設定の確認のため env.local 見てみると、Mailtrap というサービスを利用している模様。

サービス上でダミーのSMTPサーバーが用意され、それを使ってメールを送信すると画面上で送信したメールの内容を確認出来るという感じ。初めて見聞きしたサービスのため、使い方を調査した結果をメモ。
(※調査後、メールは無事にテスト出来ました。こういうのは README.md に残してて欲しい…)

Mailtrap 公式サイト



アカウント作成

トップページ右上にある 「Sign Up」ボタンをクリック。
Google, GitHub, Office 365 アカウントのいずれか、もしくはEメールにてアカウントが作成可能です。

Eメールだとそのアドレスが利用可能かどうかの確認のためのメールが送信され、そのメールのリンクをクリックするという一手間が発生しますので、可能であれば Google, GitHub, Office365 アカウントでの利用をオススメします。(大した手間ではないですけど…)

createaccount.png



ダミー SMTP サーバー情報を取得する

mailtrap_home.png

ログイン後、左メニューにある Email Testing リンクをクリック、もしくは画面中央あたりの Email Testing の「Start Testing」ボタンをクリック。(※画像赤枠のいずれか)





myinboxdetail.png

1. SMTP Settings タブををクリック

Email Address, Auto Foward, Manual Forward, Access Rights タブも気になるところですが、有料プランでないと使えないっぽいのでスルーしましょう

2. Integrations セレクトボックスで、Laravel 7+ を選択

色々な言語、フレームワークに対応しているようですが、PHPだけ謎の充実

3. copy ボタンをクリックして、クリップボードに .env の情報を保存

※画像にある僕のアカウントのSMTP情報は、Credentials を既に破棄しているので利用できませんよ!




.env に登録

mailtrap からコピーした情報を、.env に貼り付ける。
既にパラメータが存在している場合は上書きしましょう。

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



Laravel キャッシュはしつこいので、念のためクリアしておく

php artisan config:clear

Laravel でメール送信。結果が Mailtrap に記録される

雑な Laravel サンプルコード

Mail::from('xxxxxxxxx@gmail.com')
    ->to('xxxxxxxxxx@gmail.com')
    ->send('テストメールだよ');

Mailtrap 画面

正常にメールが送信されていれば、My Inbox 内の赤枠部分に表示されます。

send.png



フリーアカウントの注意事項

  • 1時間に 100 通までしか送信できない
  • InBox に 50 通までしか保存できない

一斉送信などの機能テストだとすぐ制限に引っ掛かりそうですが、通常の1通ずつ送るような機能テストだとおそらく問題になることはないかな、と感じました。

制限に引っかかるような使い方をされる場合は、MailHog コンテナを利用するといいと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3