CakePHP:Transport-config";gmail“;不见了

CakePHP:Transport-config";gmail“;不见了,php,email,cakephp,cakephp-3.0,Php,Email,Cakephp,Cakephp 3.0,我使用的是CakePHP3.0.15,所以我必须使用Cake\Network\Email\Email而不是使用Cake\Mailer\Email。无论如何,我在app.php中的EmailTransport配置如下: 'EmailTransport' => [ 'gmail' => [ 'className' => 'Smtp', 'host' => 'ssl://smtp.gmail.com', 'port' =&

我使用的是CakePHP3.0.15,所以我必须
使用Cake\Network\Email\Email
而不是
使用Cake\Mailer\Email。无论如何,我在
app.php
中的
EmailTransport
配置如下:

'EmailTransport' => [
    'gmail' => [
        'className' => 'Smtp',
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'timeout' => 30,
        'username' => 'examplesender@gmail.com',
        'password' => 's2d5f8t9',
        'client' => null,
        'tls' => null,
    ]
],
    Email::configTransport('gmail', [
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'username' => 'examplesender@gmail.com',
        'password' => 's2d5f8t9',
        'className' => 'Smtp'
    ]);
把这个放在我的控制器里:

    $email = new Email();
    $email->transport('gmail')
        ->to('examplereveiver@gmail.com', 'Example Receiver')
        ->from('examplesender@gmail.com', 'Example Sender')
        ->subject('Test Subject')
        ->send('Message!!!!!');
然后它给了我一个错误:

Transport config "gmail" is missing.
但是,在使用控制器之前,当我在控制器中配置传输时,如下所示:

'EmailTransport' => [
    'gmail' => [
        'className' => 'Smtp',
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'timeout' => 30,
        'username' => 'examplesender@gmail.com',
        'password' => 's2d5f8t9',
        'client' => null,
        'tls' => null,
    ]
],
    Email::configTransport('gmail', [
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'username' => 'examplesender@gmail.com',
        'password' => 's2d5f8t9',
        'className' => 'Smtp'
    ]);
它工作并发送电子邮件。尽管如此,我还是希望在
app.php
中配置传输,以便能够多次使用相同的传输配置


谢谢

可能您的
config/bootstrap.php
缺少
电子邮件::configTransport()
呼叫…您好@ndm,谢谢!我检查了我的
config/bootstrap.php
,发现
Email::configTransport(Configure::consume('EmailTransport'))已被注释掉。所以我取消了它的注释,发现我的
config/bootstrap.php
导入了
Cake\Mailer\Email
,而不是
Cake\Network\Email\Email
,所以我替换了它,现在一切都正常了。但现在我只是担心我可能因为替换它而损坏了其他东西。我只是想知道为什么在CakePHP 3.1之前没有使用它时,它会导入
Cake\Mailer\Email
。我不知道,可能是你修改了它,可能是你使用了一个更新的CakePHP应用程序模板并降级了框架。。。谁知道呢。也许您在问题的开头解释了一些与此相关的内容,wich丢失了。@ndm Oops,没有注意到它丢失了,对此表示抱歉。无论如何,我正在做一个现有的项目,所以我不太确定。我认为替换它是安全的,因为
Email
只在
config/bootstrap.php
中的
configTransport()
中使用,现在它可以工作了。无论如何,非常感谢你,因为你几乎解决了我的问题。