laravel@ec2でメール送信のテスト用にmailhog(ダミーのメール送受信サーバ)を使ってみた。
MailHog(メールホッグ)は、開発・テスト環境専用の「ダミーのメール受信サーバ」です。
本物のメールを外部に送らずに、アプリが送信したメールをローカルで受け取って確認するために使います。
1, EC2にmailhogをインストール
|
1 2 3 |
cd /usr/local/bin sudo curl -L -o mailhog https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64 sudo chmod +x mailhog |
2, systemd で常駐させる(サーバ化)
|
1 2 3 4 5 6 7 |
#起動・自動起動設定 sudo systemctl daemon-reload sudo systemctl start mailhog sudo systemctl enable mailhog #状態確認(runningならOK) sudo systemctl status mailhog |
3, ブラウザでmailhogの管理画面を確認。
http://localhost:8025
なんかvscodeだと自動的に接続できたけど、普通はSSLトンネルしないと駄目(ssh経由でリモートサーバをローカルサーバのように扱う技術)
|
1 |
ssh -L 8025:127.0.0.1:8025 ec2-user@<EC2のIP> |
4, laravelの.envファイルで、送信メール設定。
|
1 2 3 4 5 6 7 8 9 |
MAIL_MAILER=smtp # MAIL_HOST=mailhog MAIL_HOST=127.0.0.1 # docker-compose のサービス名じゃなくて、ec2に直接インストール MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=no-reply@example.com MAIL_FROM_NAME="${APP_NAME}" |
|
1 2 3 |
# 設定反映 php artisan config:clear php artisan cache:clear |
5, tinkerでlaravelからテストメール送信
http://localhost:8025 で受信確認できれば設定完了!
|
1 2 3 4 5 6 7 8 9 |
php artisan tinker use Illuminate\Support\Facades\Mail; Mail::raw('これはMailHogのテストです', function ($message) { $message->to('test@example.com') ->subject('MailHogテスト'); }); |