0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel 7 ビューファイルで指定したアドレスにメールを送信する

Last updated at Posted at 2020-05-21

目的

  • ビューファイルからのトリガーでメールを送信する処理を追加する際、非常に詰まったため実施方法をまとめる

実施環境

  • ハードウェア環境(下記の二つの環境で確認)
項目 情報
OS macOS Catalina(10.15.3)
ハードウェア MacBook Pro (16-inch ,2019)
プロセッサ 2.6 GHz 6コアIntel Core i7
メモリ 16 GB 2667 MHz DDR4
グラフィックス AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.3 Homwbrewを用いて導入
Laravel バージョン 7.0.8 commposerを用いて導入
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いて導入

前提情報

  • ローカル開発環境を用いたメール送信処理の追加方法をまとめる。
  • メール送信サーバはGmailを使用する。
  • 下記の方法を実施して当該アプリからテストメールを送信できる状態にしていること。

概要

  1. 入力フォームの作成
    1. ルーティングファイルの編集
    2. コントローラファイルの作成と編集
    3. ビューフィアルの作成と編集
  2. メール送信の準備
    1. クラス作成
    2. 送信内容の作成
  3. 確認

詳細

  1. 入力フォームの作成
    1. ルーティングファイルの編集
      1. Laravelアプリ名ディレクトリで下記コマンドを実行してルーティングファイルを作成する。

        $ vi routes/web.php
        
      2. 開いたルーティングファイルを下記のルーティング情報を追記する。

        アプリ名ディレクトリ/routes/web.php
        Route::get('/input', 'TestMailController@input');
        Route::post('/send', 'TestMailController@send');
        
      3. 保存して閉じる。

    2. コントローラファイルの作成と編集
      1. アプリ名ディレクトリで下記コマンドを実行してメール送信用のコントローラを作成する。

        $ php artisan make:controller TestMailController
        
      2. アプリ名ディレクトリで下記コマンドを実行して先に作成したコントローラファイルを開く。

        $ vi app/Http/Controllers/TestMailController.php
        
      3. 開いたコントローラファイルを下記の様に修正する。

        アプリ名ディレクトリ/app/Http/Controllers/TestMailController.php
        <?php
        
        namespace App\Http\Controllers;
        
        use Illuminate\Http\Request;
        //下記を追記する
        use Illuminate\Support\Facades\Mail;
        use App\Mail\TestSendMail;
        //上記までを追記する
        
        class TestMailController extends Controller
        {
            //下記を追記する
            public function input()
            {
                return view('test_mails.input');
            }
        
            public function send(Request $request)
            {
                $contact = $request->all();
                Mail::to($contact['email'])->send(new TestSendMail());
                return redirect('/input');
            }
            //上記までを追記する
        }
        
      4. 保存して閉じる

    3. ビューファイルの作成と編集
      1. アプリ名ディレクトリで下記コマンドを実行してビューファイルを格納するディレクトリを作成する。

        $ mkdir resources/views/test_mails
        
      2. アプリ名ディレクトリで下記コマンドを実行してビューファイルを開く。

        $ vi resources/views/test_mails/input.blade.php
        
      3. 開いたビューファイルを下記の様に修正する。

        アプリ名ディレクトリ/resources/views/test_mails/input.blade.php
        <form action="/send" method="POST">
            @csrf
            <input type="text" name="email">
            <input type="submit">
        </form>
        
    4. 確認
      1. アプリ名ディレクトリで下記コマンドを実行してローカルサーバを起動する。

        $ php artisan serve
        
      2. 下記にアクセスする。

      3. 下記の様に入力欄と送信ボタンが表示されている事を確認する。

        スクリーンショット 2020-05-18 23.22.36.png
  2. メール送信の準備
    1. アプリ名ディレクトリで下記コマンドを実行してメール送信専用のクラスが記載されたファイルを作成する。

      $ php artisan make:mail TestSendMail
      
    2. アプリ名ディレクトリで下記コマンドを実行して先に作成したメール送信専用のクラスファイルを開く

      $ vi app/Mail/TestSendMail.php
      
    3. 開いたクラスファイルを下記の様に修正する。

      アプリ名ディレクトリ/app/Mail/TestSendMail.php
      <?php
      
      namespace App\Mail;
      
      use Illuminate\Bus\Queueable;
      use Illuminate\Contracts\Queue\ShouldQueue;
      use Illuminate\Mail\Mailable;
      use Illuminate\Queue\SerializesModels;
      
      class TestSendMail extends Mailable
      {
          use Queueable, SerializesModels;
      
          /**
           * Create a new message instance.
           *
           * @return void
           */
          public function __construct()
          {
          }
      
          /**
           * Build the message.
           *
           * @return $this
           */
          public function build()
          {
              //下記を追記
              return $this
                  //メールの件名
                  ->subject('Test Mail')
                  //メールとして表示したいビューファイル
                  ->view('mails.test');
          }
      }
      
    4. アプリ名ディレクトリで下記コマンドを実行してメールとして表示したいビューファイルを格納するディレクトリを作成する。

      $ mkdir resources/views/mails
      
    5. アプリ名で下記コマンドを実行してメールとして表示したいビューファイル作成する。

      $ vi resources/views/mails/test.blade.php
      
    6. 開いたメールとして表示したいビューファイルを下記の様に編集する。

      アプリ名ディレクトリ/resources/views/mails/test.blade.php
      これはテストメールです
      
  3. 確認
    1. アプリ名ディレクトリで下記コマンドを実行してローカルサーバを起動する。

      $ php artisan serve
      
    2. 下記にアクセスする。

    3. 入力欄にテストメールを送信したいアドレスを入力する(正常に実装できているとメールが送信されるので注意!!!)

    4. 入力したアドレスのメール受信ボックスを確認する。

    5. 下記の様にメールが受信できていれば実装完了である。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?