ドライバーを設定
.envファイルを編集
または、config/mail.php を直接編集してもOK
// .env MAIL_DRIVER=smtp MAIL_HOST=smtp.sendgrid.net MAIL_PORT=587 MAIL_USERNAME=SendGridのユーザー名 例)xxx@kke.com MAIL_PASSWORD=SendGridのパスワード MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=tanaka@sample.com MAIL_FROM_NAME=田中太郎
mailableクラスをコマンドで作成
コマンドで下記を実行すると「app/Mail/TestMail.php」が生成される。
php artisan make:mail TestMail
生成された TestMail.php を編集
Viewテンプレートは、「resources/views/emails/test.blade.php」を利用する。
$this->subject('テストメールの件名です。')->view('emails.test');
Viewファイル「test.blade.php」を作成
吉田 様
// %name% 様 // SMTP APIで置き換える場合
本文ですよ。
メールを送信する
コントローラ内で下記を記述する。
Mail::to('yoshida@sample.com')->send(new TestMail());
SMTP APIを利用する方法
sendgrid.kke.co.jp/docs/API_Reference/SMTP_API/using_the_smtp_api.html
TestMail.php で下記のように記述する。
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->to('yoshida@sample.com')
->subject('テストメール')
->view('emails.html') // html形式
->text('emails.plain') // プレーンテキスト形式
->withSwiftMessage(function ($message) {
$smtpapi = [
'to' => [
'tanaka@sample.com',
'sato@sample.com',
'yamada@sample.com',
],
'sub' => [
'%name%' => [
'田中',
'佐藤',
'山田',
]
]
];
$message->getHeaders()
->addTextHeader('x-smtpapi', json_encode($smtpapi, JSON_PRETTY_PRINT));
});
}
コントローラからMailableクラスに値を渡す方法
件名をコントローラから渡してみる。
コントローラ
use App\Mail\TestMail; use Illuminate\Support\Facades\Mail;
$subject_text = '件名ですよ';
Mail::to('yoshida@sample.com')->send(new TestMail($subject_text));
TestMail.php
class TestMail extends Mailable
{
use Queueable, SerializesModels;
public $subject_text = '';
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($subject_text)
{
$this->subject_text= $subject_text;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->subject($this->subject_text)->view('emails.test');
}
}
メールテンプレートを更新しても反映されない場合
キャッシュが効いている可能性がある。下記コマンドで削除する。
php artisan view:clear
