CakePHP 3 中 Mailer 中的关联数据

associated data in Mailer in CakePHP 3

我正在研究 CakePHP 3.4

我有一个 contact_messages table 可以通过网站上的表格保存消息。

我想在保存新消息时向用户发送电子邮件。

为此,我创建了 class 邮件程序

<?php
namespace App\Mailer;

use Cake\Mailer\Mailer;
use Cake\Event\Event;
use Cake\Datasource\EntityInterface;

class ContactMessageMailer extends Mailer
{
    public function newMessage($message)
    {
        $this
            ->setProfile('no-reply')
            ->setTemplate('new_message')
            ->setLayout('message')
            ->setEmailFormat('html')
            ->setTo($user->email)          // user email
            ->setSubject('Verify Account')
            ->setViewVars(['name' => $user->first_name, 'email' => $user->email, 'message' => $message->body]);
    }

    public function implementedEvents()
    {
        return [
            'Model.afterSave' => 'alertMessage'
        ];
    }

    public function alertMessage(Event $event, EntityInterface $entity, \ArrayObject $options)
    {
        if ($entity->isNew()) {
            $this->send('newMessage', [$entity]);
        }
    }
}

并在 ContactMessagesTable.php

中注册活动
$mailer = new UserMailer(); //use App\Mailer\UserMailer;
$this->eventManager()->on($mailer);

ContactMessages belongsTo Users 并且 Users 拥有要发送电子邮件的用户的电子邮件。

如何在 Mailer 中获取 users 信息?

可能会这样做; 在用户 table;

public function processUser($user) 
{
  if($this->save($user)){
     $event = new Event('Model.afterSave', $this, [$entity = $user])
     $this->eventManager()->dispatch($event);
     return true;
  }else{
      return false;
   }
}

在联系信息中Table;

public function initialize()
{
parent::intialize();
$mailer = new UserMailer(); //use App\Mailer\UserMailer;
$this->Users->eventManager()->on($mailer); //ContactMessage has to be related to User table
}

希望能交流。