How to use Controller to send mail on New Event

I’m executing Cron job on windows to send mail using PHPMailer library

cd /d c:\wamp64\www\project\bin cake users mail

I would like to do, for every connected user to retrieve the email connected with

exemple :

$this->set('user_session', $this->request->session()->read('Auth.User'));

And then if this User created new Event, send the email to this user. and then Create lunch the Cron job in other words i need send mail from the add function inside my EventController

But first I have to call it from my index function

by changing this

EventsController.php

        <?php
        namespace App\Controller;

        use App\Controller\AppController;
        use Cake\Console\ShellDispatcher;
        use Cake\Routing\Router;
        use Cake\Event\Event;

        class EventsController extends AppController
        {
        public $components = array("Email");

        public function index()
        {
                //$to = $user_session['email'];
                $to = 'exemple@gmail.com';
            $subject = 'Hi buddy, i got a message for you.';
            $message = 'Nothing much. Just test out my Email Component using PHPMailer.';

            try {
                $mail = $this->Email->send_mail($to, $subject, $message);
                print_r($mail);
            } catch (Exception $e) {
                echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
            }
            exit;   

        }
        public function run($username = null){
            $shell = new ShellDispatcher();
            $output = $shell->run(['cake', 'users', $username]);
            debug($output);

            if ($output === 0){
                echo "Shell Command execute";
            }else{
                echo "Fail Command execute";
            }
            exit;
        }
            public function add()
        {
            $event = $this->Events->newEntity();
            if ($this->request->is('post')) {
                $event = $this->Events->patchEntity($event, $this->request->data);
                if ($this->Events->save($event)) {
                    //function send_mail to user who crated Event
                    $this->Flash->success(__('The event has been saved.'));
                    return $this->redirect(['action' => 'index']);
                } else {
                    $this->Flash->error(__('The event could not be saved. Please, try again.'));
                }
            }
            $this->set('eventTypes', $this->Events->EventTypes->find('list'));
            $this->set(compact('event'));
            $this->set('_serialize', ['event']);
            $this->set('user_session', $this->request->session()->read('Auth.User'));
            $this->viewBuilder()->setLayout('user');
        }
        }

UsersShell

         <?php
        namespace App\Shell;

        use Cake\Console\Shell;
        use Cake\Log\Log;
        use Cake\Controller\Component;
        use Cake\Controller\ComponentRegistry;
        use App\Controller\Component\EmailComponent;

        class UsersShell extends Shell
        {
        public function initialize()
        {
            parent::initialize();
            $this->loadModel('Users');
            //Load Component 
            $this->Email = new EmailComponent(new ComponentRegistry());
        }
        public function main()
        {
            if (empty($this->args[0])) {

                Log::write('debug', "Please enter a username.");
                return $this->abort('Please enter a username.');
                return false;
            }
            $user = $this->Users->findByUsername($this->args[0])->first();
            if ($user)
            {
                Log::write('debug', "Welcome to ". $user->username);
                $this->out("Welcome to ". $user->username);
                return true;

            } else
            {
                Log::write('debug', 'User cannot be found');
                $this->abort('User cannot be found', 128);
                return false;
            }
        }
        public function mail()
        {
            if (empty($this->args[0])) {
                return $this->abort('Please enter a email address.');
             }

            $to = $this->args[0];
            $subject = 'Hi buddy, i got a message for you.';
            $message = 'Just test out my Email Component using PHPMailer.';

            $mail = $this->Email->send_mail($to, $subject, $message);
            if ($mail) {
                $this->out("Mail Successfully Sent For :: ". $to);
            } else {
                $this->out("Mail Error.");
            }
        }
        }

EmailComponent

        <?php
        namespace App\Controller\Component;

        use Cake\Controller\Component;
        use Cake\Core\App;
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;

        require ROOT. '/vendor/phpmailer/phpmailer/src/Exception.php';
        require ROOT. '/vendor/phpmailer/phpmailer/src/PHPMailer.php';
        require ROOT. '/vendor/phpmailer/phpmailer/src/SMTP.php';

        class EmailComponent extends Component {

        public function send_mail($to, $subject, $message)
        {
            $sender = "xxx@gmail.com"; // this will be overwritten by GMail

            $header = "X-Mailer: PHP/".phpversion() . "Return-Path: $sender";

            $mail = new PHPMailer();

            $mail->SMTPDebug  = 2; // turn it off in production
            $mail->isSMTP();
            $mail->Host = 'smtp.gmail.com'; 
            $mail->SMTPAuth = true;
            $mail->Username   = "exemple@gmail.com";  
            $mail->Password   = "xxxxxx";
            $mail->SMTPSecure = "tls"; // ssl and tls
            $mail->Port = 587; // 465 and 587

            $mail->SMTPOptions = array (
                'tls' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                    'allow_self_signed' => true
                ),
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                    'allow_self_signed' => true
                )
            );

            $mail->From = $sender;
            $mail->FromName = "From Me";

            $mail->AddAddress($to);

            $mail->isHTML(true);
            $mail->CreateHeader($header);

            $mail->Subject = $subject;
            $mail->Body    = nl2br($message);
            $mail->AltBody = nl2br($message);

            // return an array with two keys: error & message
            if(!$mail->Send()) {
                return array('error' => true, 'message' => 'Mailer Error: ' . $mail->ErrorInfo);
            } else {
                return array('error' => false, 'message' =>  "Message sent!");
            }
        }

        }

UsersController this may help i was using it for reset password by email

         private function sendResetEmail($url, $user) {
            $email = new Email();
            $email->template('resetpw');
            $email->emailFormat('both');
            $email->from('no-reply@naidim.org');
            $email->to($user->email, $user->full_name);
            $email->subject('Reset your password');
            $email->viewVars(['url' => $url, 'username' => $user->username]);
            if ($email->send()) {
                $this->Flash->success(__('Check your email for your reset password link'));
            } else {
                $this->Flash->error(__('Error sending email: ') . $email->smtpError);
            }
         }

         public function reset($passkey = null) {
            if ($passkey) {
                $query = $this->Users->find('all', ['conditions' => ['passkey' => $passkey, 'timeout >' => time()]]);
                $user = $query->first();

                if ($user) {
                    if (!empty($this->request->data)) {

                        // Clear passkey and timeout
                        $this->request->data['passkey'] = null;
                        $this->request->data['timeout'] = null;
                        //$user = $this->Users->patchEntity($user, $this->request->data);
                  $user->password = $this->request->data['password'];

                        if ($this->Users->save($user)) {
                            $this->Flash->success('Password has been Updated.');
                            return $this->redirect(array('action' => 'login'));
                        } else {
                         $this->Flash->success('Password Could not be updated');
                        }
                    }
                } else {
                    $this->Flash->error('Invalid or expired passkey. Please check your email or try again');
                    $this->redirect(['action' => 'password']);
                }
                unset($user->password);
                $this->set(compact('user'));
            } else {
                $this->redirect('/');
            }

So what Im asking how to send mail inside add function ? Edit : how to call it inside my view exemple index.ctp

   <li role="presentation" class="dropdown">
                <a href="javascript:;" class="dropdown-toggle info-number" 
      data-toggle="dropdown" aria-expanded="false">
                  <i class="fa fa-envelope-o"></i>
                  <span class="badge bg-green">6</span>
                </a>
                <ul id="menu1" class="dropdown-menu list-unstyled msg_list" role="menu">
                  <li>
                    <a>r
                      <span class="image"><?php echo $this->Html->image($user_session['photo']); ?></span>
                      <span>
                        <span>Zak</span>
                        <span class="time">3 mins ago</span>
                      </span>
                      <span class="message">
                        Film festivals used to be do-or-die moments for movie makers. They were where...
                      </span>
                    </a>
                  </li>