从CakePHP 3升级到4后,我的Mailer出现了问题。这是我的配置的相关部分:
<?php
return [
'EmailTransport' => [
'default' => [
'className' => 'Mail',
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
'username' => 'user',
'password' => 'password',
'client' => null,
'tls' => null,
'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
],
'cronjob' => [
'className' => 'Mail',
],
'accounts' => [
'className' => 'Mail',
],
],
'Email' => [
'default' => [
'transport' => 'default',
'from' => 'you@localhost',
],
'cronjob' => [
'transport' => 'cronjob',
'from' => 'cronjob@foobar.com',
],
'accounts' => [
'transport' => 'accounts',
'from' => 'accounts@foobar.com',
],
],
];
下面是导致错误的代码段:
private function sendActivationEmail(User $user)
{
$url = Router::url([
'prefix' => 'Admin',
'plugin' => 'UserManager',
'controller' => 'Users',
'action' => 'activate',
$user->username,
$user->activation_key,
], true);
debug(Configure::read('EmailTransport'));
debug(Configure::read('Email'));
$mailer = new Mailer('accounts');
$mailer->setFrom(['accounts@foobar.com' => 'Foobar Website Manager'])
->setTo($user->email, $user->fullName)
->setSubject('Please activate your account')
->setEmailFormat('html')
->setViewVars(compact('url', 'user'))
->viewBuilder()
->setTemplate('UserManager.register');
return $mailer->deliver();
}
错误为Unknown email configuration "accounts".
,在
中抛出
这两个debug
函数的输出如下:
/vendor/plugins/usermanager/src/Model/Table/UsersTable.php (line 72)
[
'default' => [
'className' => 'Mail'
],
'cronjob' => [
'className' => 'Mail'
],
'accounts' => [
'className' => 'Mail'
]
]
/vendor/plugins/usermanager/src/Model/Table/UsersTable.php (line 73)
[
'default' => [
'transport' => 'default',
'from' => 'something@foobar.com'
],
'cronjob' => [
'transport' => 'cronjob',
'from' => 'cronjob@foobar.com'
],
'accounts' => [
'transport' => 'accounts',
'from' => 'accounts@foobar.com'
]
]
邮件配置中似乎存在accounts
密钥,那么为什么会出现此错误?
1条答案
按热度按时间abithluo1#
请确保您已经相应地升级了
bootstrap.php
,特别是关于如何使用EmailTransport
和Email
,如果我没有记错的话,这是CakePHP 3.7和4.1中引入的:http://github.com/cakephp/app/blob/4.2.2/config/bootstrap.php#L163-L164