[0010]mailableクラス作成しメール送信
■mailable
この例のLalavelフレームワークのバージョンは5.5です。
make:mailコマンドでmailableクラス初期作成時にapp/Mailディレクトリも作成されます。app/Mail配下にmailableクラスを配置していきます。
この例ではプロジェクト名が[sample]でプロジェクトがあるディレクトリは/home/failibere/www/sampleです。mailableクラス名は[NewOrder]にします。
コマンドプロンプト
#Lalavelのプロジェクト配下に移動
% cd /home/failibere/www/sample
#make:mailコマンド実行
% php artisan make:mail NewOrder
ご自身の環境に合わせて変更してください。
次にapp/Mailに作成されたNewOrder.phpを修正します。
NewOrder.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class NewOrder extends Mailable
{
use Queueable, SerializesModels;
protected $title;
protected $text;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($paraArr=null)
{
$this->title = sprintf('%s様、お問い合わせいただき、誠にありがとうございます(自動返信メール)', @$paraArr['name']);
$this->name = @$paraArr['name'];
$this->name_kana = @$paraArr['name_kana'];
$this->name_nick = @$paraArr['name_nick'];
$this->email = @$paraArr['email'];
$this->plan_flg = @$paraArr['plan_flg'];
$this->start_mon_flg = @$paraArr['start_mon_flg'];
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.new_order')
->text('emails.new_order_plain')
->subject($this->title)
->with([
'name' => $this->name,
'name_kana' => $this->name_kana,
'name_nick' => $this->name_nick,
'email' => $this->email,
'plan_flg' => $this->plan_flg,
'start_mon_flg' => $this->start_mon_flg,
]);
}
}
次に上記で指定したHTML形式用とテキストメール用のviewを作成します。
emails.new_orderとemails.new_order_plainにしたので、resources/viewsにemailsフォルダを作成し、
new_order.blade.phpとnew_order_plain.blade.phpを作成します。
new_order.blade.php
<!DOCTYPE html>
<html lang="ja">
<head>
<style type="text/css">
.fontB {
font-weight: bold;
}
.contact {
width: 100%;
}
.contact th {
background-color: #b6eff3;
}
.caution_txt{
font-size: 1px;
width: 100%;
}
</style>
</head>
<body>
<p>
{{@$name}} 様
</p>
<p>
この度は会員登録誠にありがとうございます。
このメールは会員登録完了をお知らせする為の自動配信メールです。
</p>
<p>[ご登録内容]
<table border="1" class="contact">
<tr>
<td>名前
<td>{{@$name}}
</tr>
<tr>
<td>名前(カナ)
<td>{{@$name_kana}}
</tr>
<tr>
<td>ニックネーム
<td>{{@$name_nick}}
</tr>
<tr>
<td>メールアドレス
<td>{{@$email}}
</tr>
<tr>
<td>プラン
<td>{{@$plan_flg}}
</tr>
<tr>
<td>プラン開始月
<td>{{@$start_mon_flg}}
</tr>
</table>
<p class="caution_txt">
※注意事項文言
</p>
<p>-----------------------------------------------------------------------
※本メールは、自動的に配信しています。こちらのメールは送信専用のため、
直接ご返信いただいてもお問い合わせにはお答えできませんので、
あらかじめご了承ください。
-----------------------------------------------------------------------
</p>
<p>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
署名
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
</p>
</body>
</html>
new_order_plain.blade.php
{{@$name}} 様
この度は会員登録誠にありがとうございます。
このメールは会員登録完了をお知らせする為の自動配信メールです。
[ご登録内容]
名前 :{{@$name}}
名前(カナ) :{{@$name_kana}}
ニックネーム :{{@$name_nick}}
メールアドレス :{{@$email}}
プラン :{{@$plan_flg}}
プラン開始月 :{{@$start_mon_flg}}
※注意事項文言
-----------------------------------------------------------------------
※本メールは、自動的に配信しています。こちらのメールは送信専用のため、
直接ご返信いただいてもお問い合わせにはお答えできませんので、
あらかじめご了承ください。
-----------------------------------------------------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
署名
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
最後にメール送信画面に呼出元を作成します。
今回は登録画面のControllerから呼び出します
RegisterController.php
//useの追加
use Illuminate\Support\Facades\Mail;
use App\Mail\NewOrder;
//呼出元追加
$to = 'XXX@failibere.com';
$bcc = 'XXXX@failibere.com';
Mail::to($to)->bcc($bcc)->send(new NewOrder($data));
完了です!!実際にメールが送れるか確認し、届かない場合は[0009]意外と無駄にはまったメール設定 ページへ