WEB/システム/IT技術ブログ

LaravelでMailableクラスを利用してメールを送信する

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));
B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives