diff options
-rw-r--r-- | .gitattributes | 1 | ||||
-rw-r--r-- | app/frontend/mail/MailModule.php | 26 | ||||
-rw-r--r-- | app/frontend/mail/Mailer.php | 41 | ||||
l--------- | app/frontend/mail/config.json | 1 | ||||
-rw-r--r-- | app/frontend/mail/config.xml | 1 | ||||
-rw-r--r-- | config/mailer.json | bin | 0 -> 316 bytes |
6 files changed, 70 insertions, 0 deletions
diff --git a/.gitattributes b/.gitattributes index da046eb..20dfc9b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ config/db.json filter=git-crypt diff=git-crypt app/frontend/encryption.xml filter=git-crypt diff=git-crypt +config/mailer.json filter=git-crypt diff=git-crypt diff --git a/app/frontend/mail/MailModule.php b/app/frontend/mail/MailModule.php index 5f7749b..e10c556 100644 --- a/app/frontend/mail/MailModule.php +++ b/app/frontend/mail/MailModule.php @@ -1,16 +1,29 @@ <?php Prado::using('System.I18N.Globalization'); +Prado::using('Application.mail.Mailer'); Prado::using('Application.mail.MailTemplate'); Prado::using('Application.mail.MailTemplateTranslator'); class MailModule extends TModule { + private $_configPath; + private $_config; + private $_templatePath; private static $_templateExtension = 'html'; private $_templateCacheSubpath = 'mail'; private static $_templateTranslationCatalogue = 'messages'; + public function setConfigPath($configPath) { + $this->_configPath = TPropertyValue::ensureString($configPath); + $this->_config = json_decode( + file_get_contents( + Prado::getPathOfNamespace($this->_configPath, '.json') + ) + ); + } + public function setTemplatePath($templatePath) { $this->_templatePath = Prado::getPathOfNamespace( TPropertyValue::ensureString($templatePath) @@ -90,6 +103,19 @@ class MailModule extends TModule { return $template; } + public function getMailer() { + if (!$this->_config) { + throw new TConfigurationException( + Prado::localize( + 'Mailer not configured' + ) + ); + } + $mailer = new Mailer(); + $mailer->configure($this->_config); + return $mailer; + } + } ?> diff --git a/app/frontend/mail/Mailer.php b/app/frontend/mail/Mailer.php new file mode 100644 index 0000000..327c9af --- /dev/null +++ b/app/frontend/mail/Mailer.php @@ -0,0 +1,41 @@ +<?php + +Prado::using('Lib.phpmailer.PHPMailerAutoload'); +Prado::using('Application.mail.MailTemplate'); + +class Mailer extends PHPMailer { + + public function __construct() { + $this->isSMTP(); + $this->SMTPAuth = TRUE; + } + + public function configure($config) { + $this->Host = $config->smtp->host; + $this->Port = $config->smtp->port; + $this->Username = $config->smtp->user; + $this->Password = $config->smtp->pass; + if ($config->smtp->tls) { + $this->SMTPSecure = 'tls'; + } + $this->setFrom($config->mail->from, $config->mail->name); + if ($config->mail->send_copies) { + $this->addBCC($config->mail->from); + } + } + + public function sendTemplate(MailTemplate $template, $subject, $to, $name) { + $this->addAddress($to, $name); + $this->isHTML(TRUE); + $this->Subject = $subject; + $html = $template->execute(); + $this->Body = $html; + $this->AltBody = strip_tags($html); + $result = $this->send(); + $this->clearAddresses(); + return $result; + } + +} + +?> diff --git a/app/frontend/mail/config.json b/app/frontend/mail/config.json new file mode 120000 index 0000000..cde12af --- /dev/null +++ b/app/frontend/mail/config.json @@ -0,0 +1 @@ +../../../config/mailer.json
\ No newline at end of file diff --git a/app/frontend/mail/config.xml b/app/frontend/mail/config.xml index d7d0e64..366e763 100644 --- a/app/frontend/mail/config.xml +++ b/app/frontend/mail/config.xml @@ -3,6 +3,7 @@ <modules> <module id="mail" class="Application.mail.MailModule" + ConfigPath="Application.mail.config" TemplatePath="Application.mail.templates" TranslationCatalogue="messages" /> </modules> diff --git a/config/mailer.json b/config/mailer.json Binary files differnew file mode 100644 index 0000000..5de7be2 --- /dev/null +++ b/config/mailer.json |