transports = new Container; } /** * Send a HTML email * * @access public * @param string $email * @param string $name * @param string $subject * @param string $html * @return EmailClient */ public function send($email, $name, $subject, $html) { if (! empty($email)) { $this->logger->debug('Sending email to '.$email.' ('.MAIL_TRANSPORT.')'); $start_time = microtime(true); $author = 'Kanboard'; if ($this->userSession->isLogged()) { $author = e('%s via Kanboard', $this->helper->user->getFullname()); } $this->getTransport(MAIL_TRANSPORT)->sendEmail($email, $name, $subject, $html, $author); if (DEBUG) { $this->logger->debug('Email sent in '.round(microtime(true) - $start_time, 6).' seconds'); } } return $this; } /** * Get mail transport instance * * @access public * @param string $transport * @return EmailClientInterface */ public function getTransport($transport) { return $this->transports[$transport]; } /** * Add a new mail transport * * @access public * @param string $transport * @param string $class * @return EmailClient */ public function setTransport($transport, $class) { $container = $this->container; $this->transports[$transport] = function () use ($class, $container) { return new $class($container); }; return $this; } }