diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-10-16 20:50:12 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-10-16 20:50:12 -0400 |
commit | f99a3c501fd6ed7b4914b8d6e855489c2ce5b219 (patch) | |
tree | 976276d6acfff78923e4549b0ef9ea94c5e2cb0d /app/Core/Mail/Transport | |
parent | 9c9ed02cd7ebc5dbbc99bcaed6f80988ce8a9677 (diff) |
Make mail transports pluggable and move integrations to plugins
- Postmark: https://github.com/kanboard/plugin-postmark
- Mailgun: https://github.com/kanboard/plugin-mailgun
- Sendgrid: https://github.com/kanboard/plugin-sendgrid
Diffstat (limited to 'app/Core/Mail/Transport')
-rw-r--r-- | app/Core/Mail/Transport/Mail.php | 57 | ||||
-rw-r--r-- | app/Core/Mail/Transport/Sendmail.php | 25 | ||||
-rw-r--r-- | app/Core/Mail/Transport/Smtp.php | 30 |
3 files changed, 112 insertions, 0 deletions
diff --git a/app/Core/Mail/Transport/Mail.php b/app/Core/Mail/Transport/Mail.php new file mode 100644 index 00000000..ca06e208 --- /dev/null +++ b/app/Core/Mail/Transport/Mail.php @@ -0,0 +1,57 @@ +<?php + +namespace Kanboard\Core\Mail\Transport; + +use Swift_Message; +use Swift_Mailer; +use Swift_MailTransport; +use Swift_TransportException; +use Kanboard\Core\Base; +use Kanboard\Core\Mail\ClientInterface; + +/** + * PHP Mail Handler + * + * @package transport + * @author Frederic Guillot + */ +class Mail extends Base implements ClientInterface +{ + /** + * Send a HTML email + * + * @access public + * @param string $email + * @param string $name + * @param string $subject + * @param string $html + * @param string $author + */ + public function sendEmail($email, $name, $subject, $html, $author) + { + try { + + $message = Swift_Message::newInstance() + ->setSubject($subject) + ->setFrom(array(MAIL_FROM => $author)) + ->setBody($html, 'text/html') + ->setTo(array($email => $name)); + + Swift_Mailer::newInstance($this->getTransport())->send($message); + } + catch (Swift_TransportException $e) { + $this->logger->error($e->getMessage()); + } + } + + /** + * Get SwiftMailer transport + * + * @access protected + * @return \Swift_Transport + */ + protected function getTransport() + { + return Swift_MailTransport::newInstance(); + } +} diff --git a/app/Core/Mail/Transport/Sendmail.php b/app/Core/Mail/Transport/Sendmail.php new file mode 100644 index 00000000..849e3385 --- /dev/null +++ b/app/Core/Mail/Transport/Sendmail.php @@ -0,0 +1,25 @@ +<?php + +namespace Kanboard\Core\Mail\Transport; + +use Swift_SendmailTransport; + +/** + * PHP Mail Handler + * + * @package transport + * @author Frederic Guillot + */ +class Sendmail extends Mail +{ + /** + * Get SwiftMailer transport + * + * @access protected + * @return \Swift_Transport + */ + protected function getTransport() + { + return Swift_SendmailTransport::newInstance(MAIL_SENDMAIL_COMMAND); + } +} diff --git a/app/Core/Mail/Transport/Smtp.php b/app/Core/Mail/Transport/Smtp.php new file mode 100644 index 00000000..757408ea --- /dev/null +++ b/app/Core/Mail/Transport/Smtp.php @@ -0,0 +1,30 @@ +<?php + +namespace Kanboard\Core\Mail\Transport; + +use Swift_SmtpTransport; + +/** + * PHP Mail Handler + * + * @package transport + * @author Frederic Guillot + */ +class Smtp extends Mail +{ + /** + * Get SwiftMailer transport + * + * @access protected + * @return \Swift_Transport + */ + protected function getTransport() + { + $transport = Swift_SmtpTransport::newInstance(MAIL_SMTP_HOSTNAME, MAIL_SMTP_PORT); + $transport->setUsername(MAIL_SMTP_USERNAME); + $transport->setPassword(MAIL_SMTP_PASSWORD); + $transport->setEncryption(MAIL_SMTP_ENCRYPTION); + + return $transport; + } +} |