如何将邮件数据从服务提供商传递到 laravel 4 中的 config/mail.php

Posted

技术标签:

【中文标题】如何将邮件数据从服务提供商传递到 laravel 4 中的 config/mail.php【英文标题】:How to pass mail data from service provider to config/mail.php in laravel 4 【发布时间】:2016-10-14 18:12:05 【问题描述】:

我使用模型文件获取邮件配置数据,并将其传递给我的提供商,名称为 CofigServiceProvider.php。但我不知道如何将它传递到 config/mail.php 文件中。因为我需要从我的管理面板动态更改邮件配置数据。或任何其他获取数据库值并在 laravel 4 中传递 app/config/mail.php 的方式

ConfigServiceProvider.php

<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Config;
use Home;

class ConfigServiceProvider extends ServiceProvider 
public function register() 
$smtpdata = Home::get_smtp_data();
Config::set('database.connections.mysql.host', $smtpdata->sm_host);
Config::set('database.connections.mysql.port', $smtpdata->sm_port);
Config::set('database.connections.mysql.username', $smtpdata->sm_uname);
Config::set('database.connections.mysql.password', $smtpdata->sm_pwd);


Home.php(模型)

public static function get_smtp_data()

    return DB::table('nm_smtp')->where('sm_isactive','=', 1)->first();

config/Mail.php:

<?php
return array(
'driver' => 'smtp',

'host' => 'smtp.gmail.com', 

'port' => 465, 
 /*
'from' => array('address' => null, 'name' => null),
===> */
'from' => array('address' => 'myaccount@gmail.com', 'name' => 'Laravel'),
'encryption' => 'ssl',
'username' => 'myname@gmail.com',
'password' => '******',
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,

 );

【问题讨论】:

【参考方案1】:

只需更新您的 ConfigServiceProvider 即可,

<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Config;
use Home;

class ConfigServiceProvider extends ServiceProvider 
public function register() 
$smtpdata = Home::get_smtp_data();
Config::set('mail.host', $smtpdata->sm_host);
Config::set('mail.port', $smtpdata->sm_port);
Config::set('mail.username', $smtpdata->sm_uname);
Config::set('mail.password', $smtpdata->sm_pwd);


【讨论】:

以上是关于如何将邮件数据从服务提供商传递到 laravel 4 中的 config/mail.php的主要内容,如果未能解决你的问题,请参考以下文章

如何通过重定向将数据传递到laravel中的视图

Laravel 5.2 - 如何将变量(数组和整数)从视图传递到控制器?

如何在使用安全资产功能时将图像从数据库传递到 laravel 中查看

Laravel 邮件:传递字符串而不是视图

如何将数据从 laravel 传递到 Vue Router?

如何通过邮件方法将数据从 ajax 传输到 laravel 5.2 控制器