【发布时间】:2021-08-10 21:29:48
【问题描述】:
从 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',
],
],
];
这是导致错误的 sn-p:
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 键似乎存在于邮件配置中,那为什么会出现此错误?
【问题讨论】:
标签: php cakephp php-7 cakephp-4.x