Laravel6でメール送信(さくらレンタルサーバ)

2022/02/27

以前、ローカル環境にて Laravel6 でログ出力でメール送信を行いました。

メールドライバをさくらレンタルサーバーを使う場合は以下をご参照ください。

今回は、サーバにデプロイして本番環境さながら、実際に送信してみようと思います。

サーバで公開するならHTMLバリデーションだけだと弱いので、Laravelでもバリデーションを設定します。

 

デモページ

 

手順

Bootstrapのバリデーションデザインを実装

Bootstrap4 でバリデーション用のデザインがあるので、実装させます。

 

フォームリクエスト設定

HTML5で新たに登場した required属性ですが、ブラウザ(サファリ・IE)によってはrequired属性が効かないこともあります。

なのでフォームを公開するなら、Laravel側でもバリデーションを設定してあげます。

 
フォームリクエストのスケルトンをartisanコマンドで作成します。


php artisan make:request ContactRequest

 

artisanコマンドによって自動生成されたフォームリクエストの中身を記述していきます。

フォームリクエストのスケルトンは app\Http\Requests に生成されます。


# app\Http\Requests\ContactRequest.php
:
/**
* 認証関係の判定を行う場合はここに処理を記述する
* 特にない場合常にtrueを返しておく
*/
public function authorize()
{
    return true;
}

/**
* バリデーションルールを記述
*/
public function rules()
{
    return [
        'last_name' => 'required',
        'first_name' => 'required',
        'email' => 'required|email',
        'note' => 'required',
    ];
}

/**
* エラーメッセージ
*/
public function messages()
{
    return [
        'required' => '必須項目です',
        'email' => 'メールアドレスの形式で入力してください',
        ];
}
:

 

コントローラにある確認画面のメソッドの引数を先ほど作成したフォームリクエストのパスに設定します。


:
    /**
     * 確認画面
     */
    public function confirm(\App\Http\Requests\ContactRequest $request)
    {
        // Bladeで使う変数
        $hash = array(
            'request' => $request,
            'title' => 'メールフォーム デモ',
            'subtitle' => '確認画面',
        );
        return view('contact.confirm')->with($hash);
    }
:

 

表示ロジック(Blade)の箇所です。氏名の箇所だけ抜粋しました。


<!--氏名-->
<div class="form-row">
    <div class="col-md-6 mb-3">
        <label for="lastName">名字</label>
        <input type="text" name="last_name" value="{{ old('last_name') }}" class="form-control @if($errors->has('last_name')) is-invalid @endif" id="lastName" placeholder="名字" required>
        @if($errors->has('last_name'))
            {{-- リクエストクラスのエラーメッセージ --}}
            <div class="invalid-feedback">{{ $errors->first('last_name') }}</div>
        @else
            {{-- HTMLのエラーメッセージ --}}
            <div class="invalid-feedback">必須項目です</div>
        @endif
    </div>
    <div class="col-md-6 mb-3">
        <label for="firstName">名前</label>
        <input type="text" name="first_name" value="{{ old('first_name') }}" class="form-control @if($errors->has('first_name')) is-invalid @endif" id="firstName" placeholder="名前" required>
        @if($errors->has('first_name'))
            <div class="invalid-feedback">{{ $errors->first('first_name') }}</div>
        @else
            <div class="invalid-feedback">必須項目です</div>
        @endif
    </div>
</div>
<!--/氏名-->

 

Git Hubにプッシュ

ローカルで制作したファイルをGitHubのリポジトリにプッシュします。


$ git add --all
$ git commit -m "Add mail form"
$ git push

 

 

レンタルサーバーからプル

さくらのレンタルサーバにSSHでアクセス。

GitHubのリモートリポジトリのデータを git pull で取り入れます。

Gitのコマンドが厳しい方は以下をご参照ください。

 

動作確認

スパムメールとして悪用されることに心配な方は、ベーシック認証などかけるのもいいかもしれません。

 
実際にフォームからメールが届けばOKです。

 
以上です。

 

さくらのレンタルサーバ スタンダード

当サイトで実演 & 解説している Laravel のプログラムは「さくらのレンタルサーバー」の「スタンダード」プランの環境を前提にして解説しています。非常にコスパがよく利用者からも評価が高いサーバーです。もし、当サイトで解説している Laravel のチュートリアルを同じ環境で試して動かしてみたい方はおススメのサーバーです。

Laravelプログラマーの初心者が選ぶ学習用サーバーとは?

公式サイトで詳細を見る

オススメ

 

本庄マサノリ

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

>> Twitter をフォローする

 

-基礎知識