テックブログ

  1. Docker
  2. 119 view

LaravelでMailHogを導入して快適にメール開発をしよう!【Docker】

はじめに

本記事ではdocker-composeで動作するLaravelにMailHogを導入して快適にメール開発をする方法をご紹介します。

MailHogとは

MailHogとは開発者向けのメールテストのためのツールです。

画面のような美しいダッシュボードでメールの送受信やプレビューなどをテストすることができます。

ソースコード

LaravelにMailHogを導入したサンプルをこちらに用意いたしました!

Laravelプロジェクトのセットアップ

本記事では、こちらをベースに進めていきます。

このプロジェクトの説明は以下の記事にまとめてあります。

すでにプロジェクトがある場合はこの章は飛ばしてください!

以下の手順でサンプルプロジェクトを起動します。

git clone https://github.com/windii-legend/laravel-docker-compose-example.git
cd laravel-docker-compose-example
docker-compose up -d --build
docker-compose exec app bash ./docker/setup.sh

完了したら一度http://localost:8000 を開いてみましょう。

以下の画面が表示されれば成功です!

MailHogの導入

それでは、MailHogを導入していきましょう。MailhogはDockerHubで公式のイメージが提供されています。

docker-compose.yml を開いて以下の記述をします。

mailhog:
    image: mailhog/mailhog
    ports:
      - "1025:1025"
      - "8025:8025"

さらにappのところに以下を追記します。

depends_on:
    - mysql
    - mailhog #追加

これでdockerの設定は終わりです。

次に .envファイルを開いて以下のようにします。

MAIL_DRIVER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=user
MAIL_PASSWORD=password
MAIL_ENCRYPTION=null

これで一度プロジェクトを立ち上げてみましょう。

docker-compose up -d --build

http://localhost:8025でMailHogの画面が立ち上がってるはずです。

メールを送信する

それでは実際にメールを送信してみましょう。

まずMailableクラスを作成します。

docker-compose exec app bash

cd my-laravel-app

php artisan make:mail Test --markdown=emails.test

次にroutes/web.php を以下のようにします。

use Illuminate\Support\Facades\Mail;
use App\Mail\Test;

Route::get('/', function () {
    return view('welcome');
});

Route::get('/test', function () {
    Mail::to('[email protected]')->send(new Test);
    return 'メール送信しました!';
});

この状態でhttp://localhost:8000/testにアクセスしてみましょう。

メールが送られるはずなのでhttp://localhost:8025にアクセスします。

送信されたメールがみられるようになっています!

以上でMailHogの導入は終了です。とても便利なのでぜひ導入してください〜〜。

Dockerの最近記事

  1. LaravelでMailHogを導入して快適にメール開発をしよう!【Docker】

  2. Laravel HorizonでQueue/Jobを眺める

  3. LaravelでRedisとSupervisorを導入してQueue/Jobを扱う【doc…

  4. Laravelの環境(Nginx+MySQL+PHP)をdocker-composeでイチ…

  5. Laravel開発環境をLaradockで構築【Docker入門】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。