mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Support per-company SMTP settings [Self-host]
This commit is contained in:
parent
5bdaad25c2
commit
dd360fb271
@ -169,14 +169,18 @@ class AppController extends BaseController
|
||||
$_ENV['DB_PASSWORD'] = $db['type']['password'];
|
||||
|
||||
if ($mail) {
|
||||
$_ENV['MAIL_DRIVER'] = $mail['driver'];
|
||||
$_ENV['MAIL_PORT'] = $mail['port'];
|
||||
$_ENV['MAIL_ENCRYPTION'] = $mail['encryption'];
|
||||
$_ENV['MAIL_HOST'] = $mail['host'];
|
||||
$_ENV['MAIL_USERNAME'] = $mail['username'];
|
||||
$_ENV['MAIL_FROM_NAME'] = $mail['from']['name'];
|
||||
$_ENV['MAIL_FROM_ADDRESS'] = $mail['from']['address'];
|
||||
$_ENV['MAIL_PASSWORD'] = $mail['password'];
|
||||
$prefix = '';
|
||||
if (($user = auth()->user()) && Account::count() > 1) {
|
||||
$prefix = $user->account_id . '_';
|
||||
}
|
||||
$_ENV[$prefix . 'MAIL_DRIVER'] = $mail['driver'];
|
||||
$_ENV[$prefix . 'MAIL_PORT'] = $mail['port'];
|
||||
$_ENV[$prefix . 'MAIL_ENCRYPTION'] = $mail['encryption'];
|
||||
$_ENV[$prefix . 'MAIL_HOST'] = $mail['host'];
|
||||
$_ENV[$prefix . 'MAIL_USERNAME'] = $mail['username'];
|
||||
$_ENV[$prefix . 'MAIL_FROM_NAME'] = $mail['from']['name'];
|
||||
$_ENV[$prefix . 'MAIL_FROM_ADDRESS'] = $mail['from']['address'];
|
||||
$_ENV[$prefix . 'MAIL_PASSWORD'] = $mail['password'];
|
||||
$_ENV['MAILGUN_DOMAIN'] = $mail['mailgun_domain'];
|
||||
$_ENV['MAILGUN_SECRET'] = $mail['mailgun_secret'];
|
||||
}
|
||||
|
@ -61,4 +61,17 @@ class HTMLUtils
|
||||
return $previous;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getEnvForAccount($field, $default = '')
|
||||
{
|
||||
$key = '';
|
||||
|
||||
if ($user = auth()->user()) {
|
||||
$key .= $user->account->id . '_';
|
||||
}
|
||||
|
||||
$key .= $field;
|
||||
|
||||
return env($key, env($field, $default));
|
||||
}
|
||||
}
|
||||
|
@ -29,21 +29,35 @@ class Mailer
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
if (isset($_ENV['POSTMARK_API_TOKEN'])) {
|
||||
$views = 'emails.'.$view.'_html';
|
||||
} else {
|
||||
$views = [
|
||||
'emails.'.$view.'_html',
|
||||
'emails.'.$view.'_text',
|
||||
];
|
||||
}
|
||||
*/
|
||||
|
||||
$views = [
|
||||
'emails.'.$view.'_html',
|
||||
'emails.'.$view.'_text',
|
||||
if (Utils::isSelfHost()) {
|
||||
if (isset($data['account'])) {
|
||||
$account = $data['account'];
|
||||
if (env($account->id . '_MAIL_FROM_ADDRESS')) {
|
||||
$fields = [
|
||||
'driver',
|
||||
'host',
|
||||
'port',
|
||||
'from.address',
|
||||
'from.name',
|
||||
'encryption',
|
||||
'username',
|
||||
'password',
|
||||
];
|
||||
foreach ($fields as $field) {
|
||||
$envKey = strtoupper(str_replace('.', '_', $field));
|
||||
if ($value = env($account->id . '_MAIL_' . $envKey)) {
|
||||
config(['mail.' . $field => $value]);
|
||||
}
|
||||
}
|
||||
(new \Illuminate\Mail\MailServiceProvider(app()))->register();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$response = Mail::send($views, $data, function ($message) use ($toEmail, $fromEmail, $fromName, $subject, $data) {
|
||||
|
@ -33,23 +33,23 @@
|
||||
</div>
|
||||
<div class="panel-body form-padding-right">
|
||||
{!! Former::select('mail[driver]')->label('driver')->options(['smtp' => 'SMTP', 'mail' => 'Mail', 'sendmail' => 'Sendmail', 'mailgun' => 'Mailgun'])
|
||||
->value(isset($_ENV['MAIL_DRIVER']) ? $_ENV['MAIL_DRIVER'] : 'smtp')->setAttributes(['onchange' => 'mailDriverChange()']) !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_DRIVER', 'smtp'))->setAttributes(['onchange' => 'mailDriverChange()']) !!}
|
||||
{!! Former::text('mail[from][name]')->label('from_name')
|
||||
->value(isset($_ENV['MAIL_FROM_NAME']) ? $_ENV['MAIL_FROM_NAME'] : '') !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_FROM_NAME')) !!}
|
||||
{!! Former::text('mail[from][address]')->label('from_address')
|
||||
->value(isset($_ENV['MAIL_FROM_ADDRESS']) ? $_ENV['MAIL_FROM_ADDRESS'] : '') !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_FROM_ADDRESS')) !!}
|
||||
{!! Former::text('mail[username]')->label('username')
|
||||
->value(isset($_ENV['MAIL_USERNAME']) ? $_ENV['MAIL_USERNAME'] : '') !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_USERNAME')) !!}
|
||||
<div id="standardMailSetup">
|
||||
{!! Former::text('mail[host]')->label('host')
|
||||
->value(isset($_ENV['MAIL_HOST']) ? $_ENV['MAIL_HOST'] : '') !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_HOST')) !!}
|
||||
{!! Former::text('mail[port]')->label('port')
|
||||
->value(isset($_ENV['MAIL_PORT']) ? $_ENV['MAIL_PORT'] : '587') !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_PORT', '587')) !!}
|
||||
{!! Former::select('mail[encryption]')->label('encryption')
|
||||
->options(['tls' => 'TLS', 'ssl' => 'SSL', '' => trans('texts.none')])
|
||||
->value(isset($_ENV['MAIL_ENCRYPTION']) ? $_ENV['MAIL_ENCRYPTION'] : 'tls') !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_ENCRYPTION', 'tls')) !!}
|
||||
{!! Former::password('mail[password]')->label('password')
|
||||
->value(isset($_ENV['MAIL_PASSWORD']) ? $_ENV['MAIL_PASSWORD'] : '') !!}
|
||||
->value(HTMLUtils::getEnvForAccount('MAIL_PASSWORD')) !!}
|
||||
</div>
|
||||
<div id="mailgunMailSetup">
|
||||
{!! Former::text('mail[mailgun_domain]')->label('mailgun_domain')
|
||||
|
Loading…
x
Reference in New Issue
Block a user