Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@miriwo

Laravel 7 バッチ処理でusersテーブルのメールアドレスにメールを送る

More than 1 year has passed since last update.

目的

  • Authで実装した認証機能で使用するusersテーブルに登録されているメールアドレスに順々にメールを送信するバッチの作成方法をまとめる

実施環境

  • ハードウェア環境(下記の二つの環境で確認)
項目 情報
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を用いて導入

前提情報

概要

  1. バッチファイルの作成
  2. 確認

概要

  1. バッチファイルの作成

    1. アプリ名ディレクトリで下記コマンドを実行してバッチファイル(コマンドファイル)を作成する。ファイル名を「SendMailCommand.php」とする。

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

      $ vi app/Console/Commands/SendMailCommand.php
      
    3. 開いたコマンドファイルを下記の様に修正する。(開いたファイルで作成するコマンドでメールの送信処理を行う)

      アプリ名ディレクトリ/app/Console/Commands/SendMailCommand.php
      <?php
      
      namespace App\Console\Commands;
      
      use Illuminate\Console\Command;
      //下記を追加する
      //usersテーブル用のモデルファイルを紐づける
      use App\User;
      //メール送信用ファサードを紐づける
      use Illuminate\Support\Facades\Mail;
      //上記までを追加する
      
      class SendMailCommand extends Command
      {
          /**
           * The name and signature of the console command.
           *
           * @var string
           */
          //下記を修正する
          protected $signature = 'app:send_mail_users';
      
          /**
           * The console command description.
           *
           * @var string
           */
          //下記を修正する
          protected $description = 'usersテーブルのemail全てにメールを送信する';
      
          /**
           * Create a new command instance.
           *
           * @return void
           */
          public function __construct()
          {
              parent::__construct();
          }
      
          /**
           * Execute the console command.
           *
           * @return mixed
           */
          public function handle()
          {
              //下記を追加・修正する
              $users_infos = User::all();
      
              foreach ($users_infos as $users_info) {
                  echo $users_info['email']."\n";
      
                  Mail::raw("これはテストメールです", function($message) use ($users_info)
                  {
                      $message->to($users_info->email)->subject('test');
                  });
              }
              //上記までを追加・修正する
          }
      }
      
  2. 確認

    1. アプリ名ディレクトリで下記コマンドを実行してコマンドが追加されている事を確認する。

      $ php artisan list
      
    2. 先のコマンドの出力の中にapp:send_mail_usersがある事を確認する。

    3. アプリ名ディレクトリで下記コマンドを実行してバッチ処理が正常に動作するか確認する。(実際にメールが送信されるため注意する!!!)

      $ php artisan app:send_mail_users
      
    4. usersテーブルに登録されているメールアドレスの受信ボックスを確認し、下記の様なメールが届いていれば実装完了である。

      test_-_shun_okawa_gmail_com_-_Gmail.png

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
miriwo
web系のバックエンドの知識を習得中! 2019/07/07~毎日更新中!
boomtechcafe
埼玉県の朝霞台を拠点にエンジニアの勉強会、交流会等のイベントを企画しています! 朝霞台駅か北朝霞駅が全然行けちゃうぜってエンジニアの方がいたら是非! もくもく会とかゲーム大会とかもやれたらな~って思ってます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?