【问题标题】:Mailer afterSave not sending email in CakePHP 3Mailer afterSave不在CakePHP 3中发送电子邮件
【发布时间】:2017-05-02 12:47:08
【问题描述】:

我正在使用 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]);

【问题讨论】:

标签: cakephp mailer cakephp-3.4


【解决方案1】:

请检查onRegistration 方法是否被解雇。我认为你必须实现Cake\Event\EventListenerInterface

请参阅docs

use Cake\Event\EventListenerInterface;

class UserMailer extends Mailer implements EventListenerInterface
{
    ...
}

编辑:好吧,别理我——刚刚发现Mailer类已经在监听事件了。

https://api.cakephp.org/3.4/class-Cake.Mailer.Mailer.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2011-07-14
    • 2014-01-17
    相关资源
    最近更新 更多