1

How to dynamically set username and password(from database) in laravel (.env file) for sending mail using smtp

MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=ssl
MAIL_FROM_NAME="${APP_NAME}"

i need to fill the username name and password from auth user mail and password.

STA
  • 30,729
  • 8
  • 45
  • 59
Anurag CK
  • 9
  • 1

1 Answers1

-1

You can set dynamically set username and password(from database) in laravel (.env file).

$data = array('MAIL_USERNAME' => "set user name",'MAIL_PASSWORD' => "set password");

 if (count($data) > 0) {

            // Read .env-file
            $env = file_get_contents(base_path() . '/.env');

            // Split string on every " " and write into array
            $env = preg_split('/\s+/', $env);;

            // Loop through given data
            foreach ((array) $data as $key => $value) {

                // Loop through .env-data
                foreach ($env as $env_key => $env_value) {

                    // Turn the value into an array and stop after the first split
                    // So it's not possible to split e.g. the App-Key by accident
                    $entry = explode("=", $env_value, 2);

                    // Check, if new key fits the actual .env-key
                    if ($entry[0] == $key) {
                        // If yes, overwrite it with the new one
                        $env[$env_key] = $key . "=" . $value;
                    } else {
                        // If not, keep the old one
                        $env[$env_key] = $env_value;
                    }
                }
            }

            // Turn the array back to an String
            $env = implode("\n", $env);

            // And overwrite the .env with the new data
            file_put_contents(base_path() . '/.env', $env);

        \Artisan::call('config:cache');
        \Artisan::call('cache:clear');
        \Artisan::call('config:clear');
        \Artisan::call('optimize:clear');
        \Artisan::call('route:clear');

        }
Engr Talha
  • 386
  • 2
  • 6