LoginSignup
11

More than 3 years have passed since last update.

Docker+LaravelでMailhogを使う

Posted at

Mailhogとは

メール送信テストツール。Dockerには公式にイメージが用意されている。

Docker環境にMailhogを導入する

環境:
Docker version 18.09.2
docker-compose version 1.23.2
Laravel Framework 5.5.45

以下に環境変数を変更。

/laradock/docker-compose.yml
version: '3'

### Mailhog ################################################
    mailhog:
      build: ./mailhog
      ports:
        - "1025:1025"
        - "8025:8025"
      networks:
        - frontend
        - backend
      image: mailhog/mailhog #追加
/laravelプロジェクト/.env
MAIL_DRIVER=smtp
# MAIL_HOST=smtp.mailtrap.io
MAIL_HOST=mailhog
# MAIL_PORT=2525
MAIL_PORT=1025
# MAIL_USERNAME=null
MAIL_USERNAME=任意のユーザー名
# MAIL_PASSWORD=null
MAIL_PASSWORD=任意のパスワード
MAIL_ENCRYPTION=null

コンテナ起動

$ docker-compose up -d --build nginx mysql mailbag workspace ...

# コンテナ確認
 docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                     PORTS                                            NAMES
eddbac17aed5        mailhog/mailhog       "MailHog Mailhog"        4 seconds ago       Up 2 seconds               0.0.0.0:1025->1025/tcp, 0.0.0.0:8025->8025/tcp   laradock_mailhog_1
fea975349d03        laradock_mysql        "docker-entrypoint.s…"   3 days ago          Up About a minute          0.0.0.0:3306->3306/tcp, 33060/tcp                laradock_mysql_1
# 〜以下省略〜

ブラウザでlocalhost:8025にアクセスして確認
スクリーンショット 2019-05-17 9.47.58.png

導入完了です!

テスト送信

メールクラスとテンプレートを作成

$ php artisan make:mail TestMail --markdown=email.testmail

以下のフィアルが生成されたのを確認。
/app/Mail/TestMail.php
/resources/views/email/testmail.blade.php

ルートに追加

/routes/web.php
use Illuminate\Support\Facades\Mail;
use App\Mail\TestMail;

Route::get('/testmail', function(){
    Mail::to('test@example.com')->send(new TestMail);
    return 'メール送信完了';
});

ブラウザでlocalhost/testmailにアクセスする。
スクリーンショット 2019-05-17 10.14.25.png

Mailhogでも確認する。
スクリーンショット 2019-05-17 10.23.03.png

参考

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
11