如何从laravel数据库中检索电子邮件凭证?

时间:2019-12-05 13:57:01

标签: laravel

我允许管理员在数据库中动态更改电子邮件凭据,因此现在如何检索.env文件以发送电子邮件。

MAIL_DRIVER={{config('settings.mail_driver')}}
MAIL_HOST={{config('settings.mail_host')}}
MAIL_PORT={{config('settings.mail_port')}}
MAIL_USERNAME={{config('settings.mail_username')}}
MAIL_PASSWORD={{config('settings.mail_password')}}
MAIL_ENCRYPTION={{config('settings.mail_encryption')}}

它不起作用,所以请告诉我正确的检索方法。

3 个答案:

答案 0 :(得分:1)

我之前遇到过这个问题,我创建了一个新的服务提供商MailServiceProvider,并在其中用

设置了mail配置
public function boot() {
    $mail = // get value in DB
    config(['mail.driver'=> $mail->driver]);
    config(['mail.host'=>$mail->host]);
}

答案 1 :(得分:0)

在您的config / app.php中

#include<iostream>
#include<string>

using std::string; using std::vector;

int main()
{
     vector<string> temp {"aaa", "bbb", "ccc"};
     vector<string>::iterator iter_str = temp.begin();
     bool result = iter_str->empty();  //the result of iter_str->empty() is not an lvalue right?

     return 0;
}

在您的.env文件中

'mail_driver' => env('MAIL_DRIVER')

然后在任何地方调用它

MAIL_DRIVER= what ever value you want here

答案 2 :(得分:0)

这不是动态更改.env的好主意,但是仍然可以尝试使用此选项。

 public static function changeEnvironmentVariable($key,$value)
{
 $path = base_path('.env');

if(is_bool(env($key)))
{
    $old = env($key)? 'true' : 'false';
}
elseif(env($key)===null){
    $old = 'null';
}
else{
    $old = env($key);
}

if (file_exists($path)) {
    file_put_contents($path, str_replace(
        "$key=".$old, "$key=".$value, file_get_contents($path)
    ));
}
}

您必须传递$key变量名及其s value in $ value`。