Exemplo n.º 1
0
 /**
  * Overwrite the to function to support redirect target, for testing.
  *
  * @param   string $email
  * @param   string $name
  * @param   string $type
  * @return  Email
  */
 public function to($email, $name = NULL, $type = 'to')
 {
     $redirect = Kohana::$config->load('email.redirect');
     if ($redirect) {
         $email = $redirect;
     }
     return parent::to($email, $name, $type);
 }
Exemplo n.º 2
0
 /**
  * Creates a SwiftMailer instance.
  *
  * @param   string  DSN connection string
  * @return  object  Swift object
  */
 public static function mailer()
 {
     if (Email::$_mailer) {
         return Email::$_mailer;
     }
     // Load default configuration
     $config = Kohana::$config->load('html-email')->as_array();
     switch ($config['driver']) {
         case 'smtp':
             $transport = Swift_SmtpTransport::newInstance(Arr::path($config, 'options.hostname', 'localhost'), Arr::path($config, 'options.port', 25), Arr::path($config, 'options.encryption'));
             $transport->setTimeout(Arr::path($config, 'options.timeout', 5));
             $user = Arr::path($config, 'options.username');
             $pass = Arr::path($config, 'options.password');
             if ($user and $pass) {
                 $transport->setUsername($user);
                 $transport->setPassword($pass);
             }
             break;
         case 'sendmail':
             $transport = Swift_SendmailTransport::newInstance(Arr::get($config, 'options', '/usr/sbin/sendmail -bs'));
             break;
         case 'postmark':
             $transport = Openbuildings\Postmark\Swift_PostmarkTransport::newInstance(Arr::get($config, 'options'));
             break;
         case 'null':
             $transport = Swift_NullTransport::newInstance();
             break;
         default:
             // Use the native connection
             $transport = Swift_MailTransport::newInstance();
             break;
     }
     // Create the SwiftMailer instance
     self::$_mailer = Swift_Mailer::newInstance($transport);
     if (Arr::get($config, 'inline_css')) {
         self::$_mailer->registerPLugin(new Openbuildings\Swiftmailer\CssInlinerPlugin());
     }
     if ($filter = Arr::get($config, 'filter')) {
         self::$_mailer->registerPlugin(new Openbuildings\Swiftmailer\FilterPlugin(Arr::get($filter, 'whitelist', array()), Arr::get($filter, 'blacklist', array())));
     }
     if ($google_campaign = Arr::path($config, 'google_campaign.campaigns')) {
         self::$_mailer->registerPlugin(new Openbuildings\Swiftmailer\GoogleCampaignPlugin(array(), array('share' => $google_campaign['share'], 'abandoned_cart' => $google_campaign['abandoned_cart'])));
     }
     if ($logger = Arr::get($config, "logger")) {
         if ($logger === TRUE) {
             self::$_mailer->registerPlugin(new Swift_Plugins_Fullloggerplugin(new Email_Logger()));
         } else {
             self::$_mailer->registerPlugin(new $logger(new Email_Logger()));
         }
     }
 }