Cakephp 3 Cake \ Network \ Email configTransport Issue

时间:2015-08-07 21:46:58

标签: email cakephp-3.0

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

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

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

    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 我得到的错误是:

  

传输配置“gmail”丢失。

我知道->transport('gmail');正在寻找app.php中定义的EmailTransport数组中的密钥 但。如何在我的代码中使用此“配置”?

希望能够解释清楚。

1 个答案:

答案 0 :(得分:4)

错误消息有点误导,因为异常不仅仅是在配置丢失的情况下被抛出,而且如果缺少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