我在CakePHP 3.4中工作
我已将Mailer设置为在注册后向用户发送验证邮件。
/src/Mailer/UserMailer.php
<?php
namespace App\Mailer;
use Cake\Mailer\Mailer;
class UserMailer extends Mailer
{
public function verify($user)
{
$this
->setProfile('no-reply')
->setTemplate('register')
->setLayout('authentication')
->setEmailFormat('html')
->setTo($user->email)
->setSubject('Verify Account')
->setViewVars(['name' => $user->first_name, 'email' => $user->email, 'hash' => $user->verification_hash]);
}
public function implementedEvents()
{
return [
'Model.afterSave' => 'onRegistration'
];
}
public function onRegistration(Event $event, EntityInterface $entity, ArrayObject $options)
{
if ($entity->isNew()) {
$this->send('verify', [$entity]);
}
}
}
但是,它没有发送任何电子邮件。
使用
手动从控制器触发时发送电子邮件$this->getMailer('User')->send('verify', [$user]);
答案 0 :(得分:0)
请检查onRegistration
方法是否被解雇。我认为你必须实施Cake\Event\EventListenerInterface
。
请参阅docs。
use Cake\Event\EventListenerInterface;
class UserMailer extends Mailer implements EventListenerInterface
{
...
}
修改:好的,请忽略我 - 刚刚发现Mailer
类已经在侦听事件。