LoginSignup
24
16

More than 3 years have passed since last update.

Laravelとdockerの開発環境でMailHogを使ってメール送信する

Last updated at Posted at 2019-05-02

Laravelでメールを送信するアプリケーションを開発している間は、実際のメールアドレスにメールを送信したくはありません。ローカルでの開発環境ではMailHogを使って、「ダミー」のメールボックスへメールメッセージを送る方法がとても便利です。

以前の Laravel5の環境をdockerで構築した記事 の続きです。

環境

  • Laravel 5.8.3
  • PHP 7.3.4

Laravel環境構築してテストメールを送信するまで

$ git clone git@github.com:ucan-lab/docker-laravel5.git
$ cd docker-laravel5
$ docker-compose up -d --build
$ docker-compose exec app composer create-project --prefer-dist "laravel/laravel=5.8.*" .

ここまでのコマンドでLaravelの環境構築が完了です。

$ docker-compose exec app ash
$ sed -i -e "s/MAIL_HOST=.*/MAIL_HOST=mail/" .env
$ sed -i -e "s/MAIL_PORT=.*/MAIL_PORT=1025/" .env

$ php artisan tinker
Mail::raw('test mail',function($message){$message->to('test@example.com')->subject('test');});

.envMAIL_HOSTMAIL_PORT の設定を書き換えます。
tinkerを起動して、テストメールを送信してみます。

スクリーンショット 2019-05-02 1.04.12.png

テストメールを受信できていればokです。

MailHog とは

MailHogは開発者向けの電子メールテストツールです。
Laravelで送信したメールの内容をブラウザ上で確認できます。
宛先に設定した実際のメールアドレス宛には送信されません。

Homebrewでインストールできたり、DockerHubにイメージが公開されているので導入が非常に簡単です。

  • SMTPサーバーの標準ポートは 1025
  • HTTPサーバーの標準ポートは 8025
  • メモリ内のメッセージストレージを使用(コンテナを再起動するとクリアされる)
  • 届いたメールはほぼリアルタイムで受信トレイに表示

docker-compose.yml の設定例

実際の設定はこちらのご参考ください。
https://github.com/ucan-lab/docker-laravel5/pull/8/files

DockerHubにMailHogのイメージが登録されているので、
docker-compose.yml で指定すると簡単に導入できます。

# docker-compose.yml

  mail:
    image: mailhog/mailhog
    ports:
      - ${MAILHOG_PORT}:8025

Laravel側の .envMAIL_HOST には コンテナ名を指定します。
MAIL_PORT には MailHog の SMTP のポート番号を指定します。

# .env

MAIL_HOST=mail
MAIL_PORT=1025

参考

24
16
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
24
16