diff --git a/core/controllers/AdminController.php b/core/controllers/AdminController.php index f24f018d2..ad909f178 100644 --- a/core/controllers/AdminController.php +++ b/core/controllers/AdminController.php @@ -99,6 +99,10 @@ function indexAction() $formArray['name']->setValue($config->global->application->name); $formArray['smartoptimizer']->setValue($config->global->smartoptimizer); $formArray['timezone']->setValue($config->global->default->timezone); + $formArray['smtpserver']->setValue($config->global->smtpserver); + $formArray['smtpuser']->setValue($config->global->smtpuser); + $formArray['smtppassword']->setValue($config->global->smtppassword); + $formArray['smtpfromaddress']->setValue($config->global->smtpfromaddress); if(isset($config->global->closeregistration)) { $formArray['closeregistration']->setValue($config->global->closeregistration); @@ -158,6 +162,10 @@ function indexAction() $config->global->closeregistration = $this->getParam('closeregistration'); $config->global->logtrace = $this->getParam('logtrace'); $config->global->httpproxy = $this->getParam('httpProxy'); + $config->global->smtpserver = $this->getParam('smtpserver'); + $config->global->smtpuser = $this->getParam('smtpuser'); + $config->global->smtppassword = $this->getParam('smtppassword'); + $config->global->smtpfromaddress = $this->getParam('smtpfromaddress'); $config->global->gravatar = $this->getParam('gravatar'); $config->global->verifyemail = $this->getParam('verifyemail'); diff --git a/core/controllers/components/UtilityComponent.php b/core/controllers/components/UtilityComponent.php index 16c736e07..494be682e 100644 --- a/core/controllers/components/UtilityComponent.php +++ b/core/controllers/components/UtilityComponent.php @@ -618,11 +618,34 @@ public static function rrmdir($dir) rmdir($dir); } + private static function getEmailTransport() + { + if(Zend_Registry::get('configGlobal')->smtpserver && + Zend_Registry::get('configGlobal')->smtpuser && + Zend_Registry::get('configGlobal')->smtppassword) + { + $config = array('auth' => 'login', + 'username' => Zend_Registry::get('configGlobal')->smtpuser, + 'password' => Zend_Registry::get('configGlobal')->smtppassword); + $transport = new Zend_Mail_Transport_Smtp(Zend_Registry::get('configGlobal')->smtpserver, $config); + return $transport; + } + else + { + return null; + } + } + /** Send mail. */ public static function sendEmail($to, $subject, $body) { $validator = new Zend_Validate_EmailAddress(); - if(getenv('midas_email_sender') && $validator->isValid(getenv('midas_email_sender'))) + if(Zend_Registry::get('configGlobal')->smtpfromaddress && + $validator->isValid(Zend_Registry::get('configGlobal')->smtpfromaddress)) + { + $sender = Zend_Registry::get('configGlobal')->smtpfromaddress; + } + else if(getenv('midas_email_sender') && $validator->isValid(getenv('midas_email_sender'))) { $sender = getenv('midas_email_sender'); } @@ -653,6 +676,10 @@ public static function sendEmail($to, $subject, $body) $message->addTo($to); $message->setSubject($subject); $message->setHtmlBody($body); + if(Zend_Registry::get('configGlobal')->environment != 'testing') + { + $message->send(); + } } else { @@ -661,10 +688,18 @@ public static function sendEmail($to, $subject, $body) $message->addTo($to); $message->setSubject($subject); $message->setBodyHtml($body); - } - if(Zend_Registry::get('configGlobal')->environment != 'testing') - { - $message->send(); + if(Zend_Registry::get('configGlobal')->environment != 'testing') + { + $transport = UtilityComponent::getEmailTransport(); + if($transport) + { + $message->send($transport); + } + else + { + $message->send(); + } + } } } catch(Exception $exception) diff --git a/core/controllers/forms/AdminForm.php b/core/controllers/forms/AdminForm.php index 98cc781d3..08d9a0adc 100644 --- a/core/controllers/forms/AdminForm.php +++ b/core/controllers/forms/AdminForm.php @@ -69,13 +69,18 @@ public function createConfigForm() $httpProxy = new Zend_Form_Element_Text('httpProxy'); + $smtpServer = new Zend_Form_Element_Text('smtpserver'); + $smtpUser = new Zend_Form_Element_Text('smtpuser'); + $smtpPassword = new Zend_Form_Element_Text('smtppassword'); + $smtpFromAddress = new Zend_Form_Element_Text('smtpfromaddress'); + $submit = new Zend_Form_Element_Submit('submitConfig'); $submit ->setLabel('Save configuration'); $form->addElements( array($dynamichelp, $keywords, $description, $timezone, $environment, $gravatar, $lang, $name, $smartoptimizer, $closeRegistration, $submit, $logtrace, $httpProxy, - $verifyEmail)); + $smtpServer, $smtpUser, $smtpPassword, $smtpFromAddress, $verifyEmail)); return $form; } } // end class diff --git a/core/views/admin/index.phtml b/core/views/admin/index.phtml index 2c36910ed..34635243c 100644 --- a/core/views/admin/index.phtml +++ b/core/views/admin/index.phtml @@ -68,6 +68,22 @@ $this->headScript()->appendFile($this->coreWebroot . '/public/js/jquery/jquery.c ".$this->configForm['httpProxy']." +
+ + {$this->configForm['smtpserver']} +
+
+ + {$this->configForm['smtpuser']} +
+
+ + {$this->configForm['smtppassword']} +
+
+ + {$this->configForm['smtpfromaddress']} +
internationalization) && Zend_Registry::get('configCore')->internationalization == "0") {