【Laravel5.4】会員登録を完了した人に登録完了メールを送る方法【マークダウン】
Laravel5.4で会員登録を完了した人に登録完了メールを送る方法です。Laravelではマークダウンで送信メールを作成し、簡単にHTMLメールを送ることができます。実装方法を見ていきましょう。
会員登録完了後にMailファンクションを実行する
ここは環境にあわせて変更してください。下記が実装イメージです。
編集ファイル:/app/Http/Controllers/RegistrationController.php
<?php
use App\Mail\Welcome;
class RegistrationController extends Controller
{
public function store(){
$this->validate(request(), [
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required',
]);
$user = new User;
$user->name = request('name');
$user->email = request('email');
$user->password = bcrypt(request('password'));
$user->save();
auth()->login($user);
// 登録完了メールを送る
\Mail::to($user)->send(new Welcome($user));
return redirect('/');
}
}
マークダウンで記述できるメール機能をartisanで作成する
$ php artisan make:mail Welcome --markdown="emails.welcome"
すると、/app/Mail/Welcome.php
と/resources/views/emails/welcome.blade.php
が生成されます。
Mailtrapを利用して、テストメールを送信する
Mailtrapは開発者向けのメール送信機能のデバッグツールです。
会員登録すると無料で利用できます。
» Mailtrap.io
こんな感じでDemo inboxを作成します。
Credentialsが簡単に取得できます。これをLaravelに記入すればOK。
Credentials情報を.env
ファイルに記入する
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=1789c92fab567b
MAIL_PASSWORD=b93f92jg2e71ee
MAIL_ENCRYPTION=null
実際に会員登録して、メール送信の動作確認をしてみる
エラーが発生した場合:Expected response code 250 but got code “530”
Expected response code 250 but got code “530”, with message “530 5.7.1 Authentication required
なんじゃこりゃ。
よく分からないけど、キャッシュクリアしたらなおりました。下記のとおり。
Configuration cache cleared!
Configuration cached successfully!
送信元(From)とapp.name
を変更する
編集ファイル:/config/mail.php
‘address’ => env(‘MAIL_FROM_ADDRESS’, ‘[email protected]’),
‘name’ => env(‘MAIL_FROM_NAME’, ‘Manabu’),
],
編集ファイル:.env
※うまく動かない場合はキャッシュクリアすれば多分直ります。
メール本文内でユーザー情報を扱えるように設定する
編集ファイル:/app/Http/Controllers/RegistrationController.php
次に、/app/Mail/Welcome.php
を下記のように編集します。
use App\User;
class Welcome extends Mailable
{
use Queueable, SerializesModels;
public $user; //ここを追加
public function __construct(User $user) //ここを追加
{
$this->user = $user; //ここを追加
}
public function build()
{
return $this->markdown('emails.welcome');
}
}
メール本文内に$user情報を挿入する
編集ファイル:/resources/views/emails/welcome.blade.php
@component('mail::message') # Introduction こんにちは、{{ $user->name }}さん。
The body of your message.
補足:メールのタイトル(Subject)を変更する方法
編集ファイル:/app/Mail/Welcome.php
public function build()
{
return $this->markdown('emails.welcome')
->subject('ここがタイトルです');
}