2018/10/12
お問い合わせフォームを作成する前にもう少し簡易的なものを作成したいと思います。
送信メッセージをあらかじめこちらで用意し、URLにアクセスしたらメールを送信するプログラムを作成します。
前提条件
メールを送信する設定がすでに終わっている前提で話を進めます。
進め方
【1】ルーディングの設定
【2】コントローラの作成
【3】コントローラにメール送信機能を実装
【4】送信するメール本文の作成
【5】メール送信完了画面の作成
【6】動作確認
【1】ルーディングの設定
http://{ドメイン}/mail をアクセスするとMailControllerのsendMailメソッドがコールされるように記述します。
Route::get('mail','MailController@sendMail');
【2】コントローラの作成
Artisanコマンドでコントローラを自動生成します。
php artisan make:controller MailController
【3】コントローラにメール送信機能を実装
メッセージを送るにはMailファサードのsendメソッドを使います。
useでMailファサードをインポートします。
sendメソッドは3つの引数を取ります。
Mail::send(['text' => '送信メールのメッセージ'], $data, function($message){ $message->to("maillアドレス")->subject("タイトル"); });
第1引数は送信するメールのメッセージです。Bladeのビューとして作成します。
第2引数はビューに渡すデータです。配列で渡します。
第3引数は「クロージャー」で、メールの様々なオプションを指定できます。
まとめると以下のように記述します。
namespace App\Http\Controllers; use Mail; use Illuminate\Http\Request; use App\Http\Requests; class MailController extends Controller { //メール送信機能 public function sendMail() { $data=[]; Mail::send(['text' => 'mail.temp'], $data, function($message){ $message->to("xxx@xxxxxx.com")->subject("テスト送信"); }); return view('mail.complete'); } }
【4】送信するメール本文の作成
sendメソッドの第一引数で
['text' => 'mail.temp']
と指定したのでresources/views/mail/temp.blade.phpを作成し、メールの本文を書きます。
テストメール:本文
【5】メール送信完了画面の作成
sendMailメソッドでは最後にビュー関数でmai.complateを表示させるように記述しています。
resources/views/mail/complate.blade.phpのファイルを作成し送信完了画面作ります。
<div> <h1>メール送信完了!</h1> </div>
【6】動作確認
http://{ドメイン}/mail
にアクセスして『メール送信完了!』の画面がちゃんと表示されているか確認します。
次にメールがちゃんと届いていればOKです。
簡易版のメール送信に関しては以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。