【发布时间】:2017-05-30 18:37:58
【问题描述】:
我正在开发 CakePHP 3.4
我有一个contact_messages 表格可以通过网站上的表格保存消息。
我想在保存新消息时向用户发送电子邮件。
为此,我创建了类似的邮件程序类
<?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 信息?
【问题讨论】:
标签: cakephp cakephp-3.4