Laravelのローカル開発でメールを送信したいときに便利なMailTrapを使う方法
MailTrapとは、アプリからダミーのメールを送信しメールを受信できるサービス。
googleアカウントでログインするだけで登録できます。
MailTrapのウェブブラウザで受信したダミーメールがみれます。
ざっくりした手順
・MailTrapにユーザー登録
・MailTrapで自分専用のメール受信boxやMailTrapにメールを送信するためのSMTPの情報が閲覧できる
・Laravel側でSMTPの情報を.envファイルに登録
・laravelからダミーメールを送信
・MailTrapでメールを受信、内容確認
上記の流れです。
MailTrapに登録したらSMTPの情報を確認
MailTrapでLaravelに選択メニューで選択して、SMTPの情報をコピーし、Laravelの.envファイルの該当箇所にペーストする。
・Laravelの場合のSMTP情報
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=○×△
MAIL_PASSWORD=○×△
MAIL_FROM_ADDRESS=from@example.com
MAIL_FROM_NAME=Example
Laravel側からメールを送信できるようにする処理の流れ
・コントローラー作成→ルーティング作成→viewファイル作成
コントローラーにメールを送信する処理を書き、メッセージ内容はviewファイルに書き、コントローラーからviewファイルを呼び出す流れ。
ルーティングで、適当に決めたURLにアクセスしてコントローラーを呼び出しメールが送信される。
コントローラーにメールを送信する処理を書く
php artisan make:controller MailSendController
でコントローラーを作成。
コントローラーのindexメソッド内に下記を書く。
$data = [ ];
Mail::send('emails.mailsend', $data, function($message){
$message->to('hoge@example.com', 'Test')
->subject('test mail');
});
web.phpにメール送信用にルーティングを書く
Route::get( '/mailsend' , 'MailSendController@index');
上記の様に書くことで、/mailsendにアクセスしたら、メールが送信されます。
viewファイルを作成しメール本文を書く
resourcesフォルダの中にemailsフォルダを作り、その中にmailsend.blade.phpを作成する。
中身は、適当な文章でok。
「テストメールです。」 など。
Laravelアプリで/mailsendにアクセス
URLに/mailsendを入力します。
するとメールが送信されるのでMailTrapのdemo inboxを開き、メールが届いているかを確認する。
感想
意外と簡単なので、ローカル開発しているアプリから初めてメール送信を試すには、MailTrapは良さげなサービスだと思いました。
メール送信でいきなり難しいのにチャレンジするよりかは、手軽に初めて、初速をつけて、もっと本格的なのにチャレンジする流れで行けばいいなと思いました。