LaravelでMailHogを使うメモ
LaravelでMailHogを利用してメール送信する為のメモです。
 環境構築には、Laradocを利用しています。
LaravelのQueueサービスを試してみたくて、メールの送信を調べたのであまり参考にならないと思います。
/laradock/docker-compose.ymlを編集。
### Mailhog ################################################ mailhog: build: ./mailhog ports: - "1025:1025" - "8025:8025" networks: - frontend - backend image: mailhog/mailhog #追加
laradockプロジェクト/.env
MAIL_DRIVER=smtp MAIL_HOST=mailhog #変更 MAIL_PORT=1025 #変更 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null
docker-compose up -d nginx mysql mailhog
localhost:8025でアクセスすると以下の画面が表示されます。

メールクラスを作成
以下のコマンドで、/app/Mailにメールクラスが作成されます。
php artisan make:mail SampleMail
--markdownオプションを利用すると、/resources配下にメール用のテンプレートファイルが作成されます。
php artisan make:mail SampleMail --markdown=email.sample
作成されたMailクラスは以下になります。
<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class SampleMail extends Mailable { use Queueable, SerializesModels; /** * Create a new message instance. * * @return void */ public function __construct() { // } /** * Build the message. * * @return $this */ public function build() { return $this->view('view.name'); } }
--markdownオプションを利用するとbuildの定義が少し変わります。
    public function build()
    {
        return $this->markdown('email.sample');
    }
routeを変更
/routes/webにメール送信用の処理を追加します。
Route::get('/sample_mail', function(){
    Mail::to('sample@example.com')->send(new SampleMail);
    return '送信完了!';
});
/app/Mail/SampleMail.phpのbuild関数を変更します。
 変更に合わせて/resources/viewsにviewファイルを作成します。
    public function build()
    {
        return $this->view('email.sample');
    }
viewの/resources/views/email/sample.blade.phpの中身は、メールの中身になります。
お問い合わせありがとうございました!
mailhogをみると以下のようにメールが送信されているのが確認できます。
