メール送信(ログに出力)

2019/03/14

WEBサイトの構築で最初に作るであろうプログラムがメールフォーム。

Laravel5.2では Mail ファザードを利用して送信します。

今回は Laravel のMail ファザードを使ってお問い合わせフォームを作ってみます。

 

演習

今回は第一ステップとしてメール送信しません。

ログファイルに内容を書き込むやり方をします。

前提条件として「ルーティング」「コントローラ」といった基本的なことは理解しているものとします。

よくわからない方は以下をご参考ください。

 
手順

 

envファイルの設定

送信内容をログに出力する場合は.envファイルの MAIL_DRIVER の値に log を設定します。


# .env
MAIL_DRIVER = log
:

ポイント
メール送信の為の提供ドライバ

Laravel のメール送信機能では、以下のドライバに対応しています。

smtp
SMTPサーバーから送信します。一般的な送信方法です。
sendmail
PHPのmail関数で送信します。

mailgun
Mailgun という API ベースのメース配信サービスから送信します。
mandrill
Mandrill という API ベースのメース配信サービスから送信します。
mailtrap
mailtrap という API ベースのメール配信サービスから送信します。

ses
AWS が提供する Amazon SES から送信するサービスです。
log
送信は行われず、ログファイルに内容を書き込みます。今回はこれを使用します。
array
ロジックは通りますが、送信はされません。

 

Mailファサードの使用

メールを送るためには、Mailファサードのsendメソッドを使います。


# 書式
Mail::send('メールの文章', 'ビューに渡す配列' , function($message){
  $message->to('メールアドレス')->subject('件名');
});

ポイント

メールの文章は Blade で作成します。

テキストメールのみ送信する場合は以下の記述になります。


# 例:メールの文章が email.message.blade.php の場合
# さらにテキストメールのみ
Mail::send(array('text' => 'email.message'), 'ビューに渡す配列' , function($message){
  $message->to('メールアドレス')->subject('件名');
});

送信先が動的な場合はクロージャーに「use」を使います。


# 例:送信先メールアドレスが変数「$login_user_email」
Mail::send(array('text' => 'email.message'), 'ビューに渡す配列' , function($message) use ($login_user_email){
  $message->to($login_user_email)->subject('件名');
});

 

メール文章の作成

コントローラ

# リクエストを $dataArray に格納
# リクエストの中身 件名:$title メールアドレス:$email 内容:$body
$dataArray = $request->all();

# Mailファサード
Mail::send(array('text' => 'email.message'), $dataArray , function($message) use ($dataArray){
  $message->to($dataArray["email"])->subject($dataArray["title"]);
});

 

メール文章(email.message.blade.php)

お問い合せいただき誠にありがとうございます。
お問い合わせいただいた内容は下記のとおりです。
ご確認ください。
 
------------------------------------------------------------
【件名】:{{$title}}
【メールアドレス】:{{$email}}
【ご質問内容】:
{{$body}}
------------------------------------------------------------
 
もし間違いがある場合は文末の連絡先まで、ご一報ください。
よろしくお願いいたします。
 
< Laravel学習帳 >

 

動作確認

入力画面

 

確認画面

 

完了画面

 

ログファイル

ログファイルに上記のように出力できていればOKです。

 
メール送信(ログに出力)に関しては以上です。

本庄マサノリ

仕事でLaravelを使っています。気づいたことや新しい発見など情報を発信していきます。メールはこちら

 

-チュートリアル, 初級