En app_local, ¿cómo puedo configurar el nombre de usuario y la contraseña con variables en cakephp 4? Quiero obtener los valores de una tabla. O si no puedo usar una variable para configurar el correo electrónico, ¿hay otra forma?

 'EmailTransport' => [
            'default' => [
                'host' => 'ssl://smtp.gmail.com',
                'port' => 465,
                'username'=>'xx@gmail.com',
                'password'=>'xx',

//how can i do this code below with the variables as i cant get data from a table in this file?     
      
    'EmailTransport' => [
            'default' => [
                'host' => 'ssl://smtp.gmail.com',
                'port' => 465,
                'username'=>$username,
                'password'=>$password,

https://book.cakephp.org/4/en/core-libraries/email.html

1
atown99 22 ene. 2021 a las 15:03

1 respuesta

La mejor respuesta

Mantenga la configuración de correo electrónico predeterminada en su archivo de configuración.

En las acciones de su controlador, haga algo como esto:

use Cake\Mailer\MailerAwareTrait;
use Cake\Mailer\TransportFactory;
// ....
public function index()
{
    $users = $this->Users->find();

    foreach ($users as $user) {
        TransportFactory::drop('gmail'); // If you wish to modify an existing configuration, you should drop it, change configuration and then re-add it.
        TransportFactory::setConfig('gmail', [
            'host' => 'ssl://smtp.gmail.com',
            'port' => 465,
            'username' => $user->mail_username,
            'password' => $user->mail_password,
            'className' => 'Smtp',
        ]);

        $this->getMailer('Users')->send('user', [$user]);
    }
}

o prueba esto:

$this->getMailer('Users')
->drop('gmail')
->setConfig('gmail', [
    'host' => 'ssl://smtp.gmail.com',
    'port' => 465,
    'username' => $user->mail_username,
    'password' => $user->mail_password,
    'className' => 'Smtp',
 ])
->send('user', [$user]);

leer más https: / /book.cakephp.org/4/en/core-libraries/email.html#configuring-transports

nota: por razones de seguridad, asegúrese de no guardar una contraseña de texto sin formato en la base de datos

1
Salines 23 ene. 2021 a las 11:37