Cakephp 3 Cake\Network\Email configTransport 问题

Cakephp 3 Cake\Network\Email configTransport Issue

我正在使用 Cake\Network\Email\Email class 发送一些电子邮件。

我已成功发送一封电子邮件,其中包含我在 config/app 上设置的 smtp 配置。php

问题是我不希望配置在那里。 我有这段代码:

    function enviacorreo($email, $asunto, $content, $cc=null) {

    Email::configTransport('gmail', [
        'port'=>$smtpport,
        'timeout'=>'30',
        'host' => $smtp,
        'username'=>$smtpuser,
        'password'=>$smtppasswd
    ]);
    $email_obj = new Email();

    $email_obj->template('default')
        ->emailFormat('html')
        ->to($email)
        ->from([$smtpuser => $nombreSistema])
        ->subject($asunto)
        ->transport('gmail');

    if($email_obj->send($content))
        return array('exito'=>1,'error'=>'Ninguno');
    else
        return array('exito'=>0,'error'=>'El correo no pudo ser enviado');
}

我在关注正书here 我得到的错误是:

Transport config "gmail" is missing.

我知道 ->transport('gmail'); 正在 app.php 中定义的 EmailTransport 数组中查找键 但。我怎样才能在我的代码中包含这个 'configuration'?

希望解释清楚

错误消息有点误导,因为不仅在缺少配置的情况下抛出异常,而且在缺少 className 选项的情况下抛出异常,在您的示例中就是这种情况(#7204).

如果您仔细查看文档,您应该会发现您没有正确遵循它。

[...]

// Sample smtp configuration.
Email::configTransport('gmail', [
    'host' => 'ssl://smtp.gmail.com',
    'port' => 465,
    'username' => 'my@gmail.com',
    'password' => 'secret',
    'className' => 'Smtp' // <------ there it is
]);

[...]

Cookbook > Email > Configuring Transports