/** * 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); }
/** * 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())); } } }