Вход Регистрация
Файл: 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;
    }
}
Онлайн: 0
Реклама