Laravelではメール処理に便利なMailableクラスが用意されており、この機能を利用してメールを送信します。
Mailableクラスを用意する
例えばSampleMailクラスを作成する場合、以下のコマンドを実行します。
> php artisan make:mail SampleMail
すると、以下の内容でファイル「…/app/Mail/SampleMail.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;
public function __construct()
{
}
public function build()
{
return $this->view('view.name');
}
}
関数buildで、以下のように件名やメールの内容、宛先などを指定します。
public function build()
{
return $this->from('送り主メールアドレス')
->subject('メールタイトル')
->view('HTMLメール内容となるビューを指定')
->text('平文メール内容となるビューを指定')
->with('ビューへ渡すパラメータ')
->attach('添付ファイル');
}
fromを省略するとconfigファイルで設定した内容が適応されます。設定は「…/config/mail.php」の以下の部分を書き換えます。送り主情報が一定の場合は便利です。
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
パラメータをビューへセットする
SampleMailクラスでパラメータを設定して、ビューへセットする方法です。
SampleMailクラスを以下のように編集します。
public $params;
public function __construct($params)
{
$this->params = $params;
}
このようにインスタンスに設定すれば、例えば以下のようにしてビューで値を取得することができます。
{{ $params['name'] }}
メールを送信する
それでは実際にコントローラ内で、SampleMailクラスを利用してメールを送信します。
まず、必要なクラスをインポートします。
use App\Mail\SampleMail; use Illuminate\Support\Facades\Mail;
例えば以下のように実行すれば、用意したMailableクラスとビューの内容でメールが送信されます。
$params = array();
$params['name'] = 'お名前';
Mail::to('送信先メールアドレス')->send(new SampleMail($params));
コメントする