Файл: gapps/vendor/laravel/framework/src/Illuminate/Mail/TransportManager.php
Строк: 274
<?php
namespace IlluminateMail;
use AwsSesSesClient;
use IlluminateSupportArr;
use IlluminateSupportManager;
use GuzzleHttpClient as HttpClient;
use Swift_SmtpTransport as SmtpTransport;
use Swift_MailTransport as MailTransport;
use IlluminateMailTransportLogTransport;
use IlluminateMailTransportSesTransport;
use IlluminateMailTransportMailgunTransport;
use IlluminateMailTransportMandrillTransport;
use IlluminateMailTransportSparkPostTransport;
use Swift_SendmailTransport as SendmailTransport;
class TransportManager extends Manager
{
/**
* Create an instance of the SMTP Swift Transport driver.
*
* @return Swift_SmtpTransport
*/
protected function createSmtpDriver()
{
$config = $this->app['config']['mail'];
// The Swift SMTP transport instance will allow us to use any SMTP backend
// for delivering mail such as Sendgrid, Amazon SES, or a custom server
// a developer has available. We will just pass this configured host.
$transport = SmtpTransport::newInstance(
$config['host'], $config['port']
);
if (isset($config['encryption'])) {
$transport->setEncryption($config['encryption']);
}
// Once we have the transport we will check for the presence of a username
// and password. If we have it we will set the credentials on the Swift
// transporter instance so that we'll properly authenticate delivery.
if (isset($config['username'])) {
$transport->setUsername($config['username']);
$transport->setPassword($config['password']);
}
if (isset($config['stream'])) {
$transport->setStreamOptions($config['stream']);
}
return $transport;
}
/**
* Create an instance of the Sendmail Swift Transport driver.
*
* @return Swift_SendmailTransport
*/
protected function createSendmailDriver()
{
$command = $this->app['config']['mail']['sendmail'];
return SendmailTransport::newInstance($command);
}
/**
* Create an instance of the Amazon SES Swift Transport driver.
*
* @return Swift_SendmailTransport
*/
protected function createSesDriver()
{
$config = $this->app['config']->get('services.ses', []);
$config += [
'version' => 'latest', 'service' => 'email',
];
if ($config['key'] && $config['secret']) {
$config['credentials'] = Arr::only($config, ['key', 'secret']);
}
return new SesTransport(new SesClient($config));
}
/**
* Create an instance of the Mail Swift Transport driver.
*
* @return Swift_MailTransport
*/
protected function createMailDriver()
{
return MailTransport::newInstance();
}
/**
* Create an instance of the Mailgun Swift Transport driver.
*
* @return IlluminateMailTransportMailgunTransport
*/
protected function createMailgunDriver()
{
$config = $this->app['config']->get('services.mailgun', []);
return new MailgunTransport(
$this->getHttpClient($config),
$config['secret'], $config['domain']
);
}
/**
* Create an instance of the Mandrill Swift Transport driver.
*
* @return IlluminateMailTransportMandrillTransport
*/
protected function createMandrillDriver()
{
$config = $this->app['config']->get('services.mandrill', []);
return new MandrillTransport(
$this->getHttpClient($config), $config['secret']
);
}
/**
* Create an instance of the SparkPost Swift Transport driver.
*
* @return IlluminateMailTransportSparkPostTransport
*/
protected function createSparkPostDriver()
{
$config = $this->app['config']->get('services.sparkpost', []);
return new SparkPostTransport(
$this->getHttpClient($config),
$config['secret'],
Arr::get($config, 'options', [])
);
}
/**
* Create an instance of the Log Swift Transport driver.
*
* @return IlluminateMailTransportLogTransport
*/
protected function createLogDriver()
{
return new LogTransport($this->app->make('PsrLogLoggerInterface'));
}
/**
* Get a fresh Guzzle HTTP client instance.
*
* @param array $config
* @return HttpClient
*/
protected function getHttpClient($config)
{
$guzzleConfig = Arr::get($config, 'guzzle', []);
return new HttpClient(Arr::add($guzzleConfig, 'connect_timeout', 60));
}
/**
* Get the default mail driver name.
*
* @return string
*/
public function getDefaultDriver()
{
return $this->app['config']['mail.driver'];
}
/**
* Set the default mail driver name.
*
* @param string $name
* @return void
*/
public function setDefaultDriver($name)
{
$this->app['config']['mail.driver'] = $name;
}
}