Cakephp 如何通过cakehphp app_local中的变量设置电子邮件

Cakephp 如何通过cakehphp app_local中的变量设置电子邮件,cakephp,cakephp-3.0,cakephp-4.x,Cakephp,Cakephp 3.0,Cakephp 4.x,在app_local中,如何在cakephp 4中使用变量设置用户名和密码?我想从表中获取值。 或者如果我不能使用变量来设置电子邮件,那么还有其他方法吗 'EmailTransport' => [ 'default' => [ 'host' => 'ssl://smtp.gmail.com', 'port' => 465, 'username'=>

在app_local中,如何在cakephp 4中使用变量设置用户名和密码?我想从表中获取值。 或者如果我不能使用变量来设置电子邮件,那么还有其他方法吗

 '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,

在配置文件中保留默认电子邮件设置

在控制器操作中,执行以下操作:

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]);
    }
}
或者试试这个:

$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]);
阅读更多信息


注意:出于安全原因,请确保不要将纯文本密码保存到数据库中

您的文本显示为CakePHP 4,链接和标签显示为CakePHP 3?链接已更新为cake4,但仍然存在相同的代码/问题。我不知道是否有人从3个帖子中添加了解决方案?除非我遗漏了什么。,