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
# 〜以下省略〜
導入完了です!
テスト送信
メールクラスとテンプレートを作成
$ 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にアクセスする。
参考