CakePHP3でメール送信用のクラスを作る方法

以下のコマンドを実行することで自分用のメール送信クラスを作成することが可能です。

# bin/cake bake mailer default       

Welcome to CakePHP v3.4.5 Console
---------------------------------------------------------------
App : src
Path: /var/www/html/src/
PHP : 7.0.17
---------------------------------------------------------------

作成したクラスの中にメソッドを用意します。

<?php
namespace App\Mailer;

use Cake\Mailer\Mailer;
use Cake\Core\Configure;
use Cake\Routing\Router;

class DefaultMailer extends Mailer
{

    /**
     * Mailer's name.
     *
     * @var string
     */
    static public $name = 'Default';

    public function invite($email, $user, $company)
    {
        $this
        ->viewVars(['user' => $user,'company' => $company])
        ->setSubject('招待します')
        ->setTo($email)
        ->setSender($user->email, $user->full_name)
        ->setEmailFormat('text');
    }
}

Controllerからの呼び出し方は以下のようになります。引数は配列として複数渡すことができます。

use Cake\Mailer\MailerAwareTrait

class UsersController extends AppController
{
    use MailerAwareTrait;

    public function invite()
    {
                        $this->getMailer('Default')->send('invite', [$email, $user, $company]);
    }
}

https://book.cakephp.org/3.0/ja/core-libraries/email.html#id13