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をみると以下のようにメールが送信されているのが確認できます。