Example #1
0
 /**
  *
  **/
 public function sendMail($fromaddress, $toaddress, $subject, $message, $fromname = '')
 {
     // format
     $fromaddress = preg_replace('/[\\r\\n]/', '', $fromaddress);
     $toaddress = preg_replace('/[\\r\\n]/', '', $toaddress);
     $subject = preg_replace('/[\\r\\n]/', '', $subject);
     $message = preg_replace('/\\r\\n?|\\n/', '<br \\>', $message);
     try {
         if ($fromaddress != '') {
             if ($fromname != '') {
                 self::$instance->FromName = $fromname;
             }
             self::$instance->From = $fromaddress;
             self::$instance->AddReplyTo($fromaddress);
         }
         self::$instance->AddAddress($toaddress);
         self::$instance->Subject = $subject;
         self::$instance->Body = $message;
         self::$instance->AltBody = strip_tags($message);
         self::$instance->Send();
         return true;
     } catch (phpmailerException $e) {
         CAT_Helper_Mail::setError(self::$instance->ErrorInfo);
         return false;
     } catch (Exception $e) {
         CAT_Helper_Mail::setError($e->getMessage());
         return false;
     }
     // never reached
     return true;
 }
Example #2
0
 /**
  *
  **/
 public function sendMail($fromaddress, $toaddress, $subject, $message, $fromname = '', $html = '')
 {
     $use_smtp = false;
     if ($fromname != '') {
         $fromaddress = array($fromaddress => $fromname);
     }
     // Create the message
     try {
         $message = Swift_Message::newInstance()->setSubject($subject)->setFrom($fromaddress)->setTo($toaddress)->setBody($message);
         if ($html != '') {
             $message->addPart($html, 'text/html');
         }
     } catch (Exception $e) {
         return false;
     }
     if (!self::$transport) {
         // create the transport
         if (isset(self::$settings['routine']) && self::$settings['routine'] == "smtp" && isset(self::$settings['smtp_host']) && strlen(self::$settings['smtp_host']) > 5) {
             $port = '25';
             $tp = NULL;
             // check for SSL
             // port 587 is for STARTTLS
             // port 465 is for TLS
             if (isset(self::$settings['smtp_ssl']) && self::$settings['smtp_ssl'] == true) {
                 if (isset(self::$settings['smtp_ssl_port']) && self::$settings['smtp_ssl_port'] != '' && self::$settings['smtp_ssl_port'] != '25' && self::$settings['smtp_ssl_port'] != '587') {
                     $transports = stream_get_transports();
                     if (in_array('tls', $transports)) {
                         $tp = 'tls';
                         $port = isset(self::$settings['smtp_ssl_port']) && self::$settings['smtp_ssl_port'] != '' ? self::$settings['smtp_ssl_port'] : '465';
                     } else {
                         if (in_array('ssl', $transports)) {
                             $tp = 'ssl';
                             $port = isset(self::$settings['smtp_ssl_port']) && self::$settings['smtp_ssl_port'] != '' ? self::$settings['smtp_ssl_port'] : '465';
                         }
                     }
                 }
             }
             self::$transport = Swift_SmtpTransport::newInstance(self::$settings['smtp_host'], $port, $tp);
             if (self::$debug) {
                 $logger = new Swift_Plugins_Loggers_EchoLogger();
                 self::$transport->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));
             }
             $use_smtp = true;
         } else {
             self::$transport = Swift_MailTransport::newInstance();
         }
         if ($use_smtp && isset(self::$settings['smtp_auth']) && isset(self::$settings['smtp_username']) && isset(self::$settings['smtp_password']) && self::$settings['smtp_auth'] == "true" && strlen(self::$settings['smtp_username']) > 1 && strlen(self::$settings['smtp_password']) > 1) {
             // use SMTP authentification
             self::$transport->setUsername(self::$settings['smtp_username']);
             self::$transport->setPassword(self::$settings['smtp_password']);
         }
         // timeout
         if ($use_smtp && isset(self::$settings['smtp_timeout']) && self::$settings['smtp_timeout'] != '') {
             self::$transport->setTimeout(self::$settings['smtp_timeout']);
         }
     }
     if (!self::$mailer) {
         // Create the Mailer using your created Transport
         self::$mailer = Swift_Mailer::newInstance(self::$transport);
     }
     try {
         self::$mailer->send($message);
     } catch (Swift_TransportException $e) {
         CAT_Helper_Mail::setError('Transport exception: ' . $e->getMessage() . ' (Port: ' . $port . ', Transport: ' . $tp . ')');
         return false;
     } catch (Exception $e) {
         CAT_Helper_Mail::setError($e->getMessage());
         return false;
     }
     return true;
 }
Example #3
0
        {
            unset( $_SESSION['captcha'] );
        }
    */
    if (!count($errors)) {
        // Generate a random password
        $new_pass = $users->generateRandomString(8);
        $md5_password = md5($new_pass);
        $result = $users->createUser($groups_id, $active, $username, $md5_password, $display_name, $email, CAT_Users::get_home_folder());
        if (!is_bool($result)) {
            $errors[] = $val->lang()->translate('Unable to create user account. Please contact the administrator.');
        } else {
            // Setup email to send
            $mail_to = $email;
            $mail_subject = $val->lang()->translate('Your login details...');
            $mail_message = $parser->get('account_signup_mail_body', array('LOGIN_DISPLAY_NAME' => $display_name, 'LOGIN_WEBSITE_TITLE' => WEBSITE_TITLE, 'LOGIN_NAME' => $username, 'LOGIN_PASSWORD' => $new_pass, 'SERVER_EMAIL' => SERVER_EMAIL));
            // Try sending the email
            if (!CAT_Helper_Mail::getInstance()->sendMail(SERVER_EMAIL, $mail_to, $mail_subject, $mail_message, CATMAILER_DEFAULT_SENDERNAME)) {
                $database->query("DELETE FROM `:prefix:users` WHERE username=:name", array('name' => $username));
                $errors[] = $val->lang()->translate('Unable to email password, please contact system administrator');
            } else {
                $message = $val->lang()->translate('Registration process completed!<br /><br />You should receive an eMail with your login data. If not, please contact {{SERVER_EMAIL}}.', array('SERVER_EMAIL' => SERVER_EMAIL));
                $form = false;
            }
        }
    }
    if (count($errors)) {
        $message = implode('<br />', $errors);
    }
}
$parser->output('account_signup_form', array('form' => $form, 'captcha' => CAT_Helper_Captcha::get(), 'message' => $message, 'ENABLED_ASP' => ENABLED_ASP, 'username' => $val->sanitizePost('username'), 'display_name' => $val->sanitizePost('display_name'), 'email' => $val->sanitizePost('email')));
Example #4
0
 /**
  *
  *
  *
  *
  **/
 public static function setError($msg)
 {
     self::$error = $msg;
 }
Example #5
0
 /**
  * handles forgot user details:
  * + generate new password
  * + send user a mail with his login details
  *
  * @access public
  * @param  string  $email - email address
  * @return
  **/
 public static function handleForgot($email)
 {
     global $parser;
     $email = strip_tags($email);
     $self = self::getInstance();
     $val = CAT_Helper_Validate::getInstance();
     $message = '';
     $result = false;
     // Check if the email exists in the database
     $results = $self->db()->query("SELECT `user_id`,`username`,`display_name`,`email`,`last_reset`,`password` FROM " . "`:prefix:users` WHERE email=:mail", array('mail' => $email));
     if ($results->rowCount() > 0) {
         // Get the id, username, email, and last_reset from the above db query
         $results_array = $results->fetch();
         // Check if the password has been reset in the last hour
         $last_reset = $results_array['last_reset'];
         $time_diff = time() - $last_reset;
         // Time since last reset in seconds
         $time_diff = $time_diff / 60 / 60;
         // Time since last reset in hours
         if ($time_diff < 1) {
             // Tell the user that their password cannot be reset more than once per hour
             $message = $self->lang()->translate('Password cannot be reset more than once per hour');
         } else {
             $old_pass = $results_array['password'];
             /**
              *	Generate a random password then update the database with it
              */
             $new_pass = self::generateRandomString(AUTH_MIN_PASS_LENGTH);
             $self->db()->query("UPDATE `:prefix:users` SET password=:pw, last_reset=:reset WHERE user_id=:id", array('pw' => md5($new_pass), 'reset' => time(), 'id' => $results_array['user_id']));
             if ($self->db()->isError()) {
                 // Error updating database
                 $message = $self->db()->getError();
             } else {
                 // Setup email to send
                 $mail_to = $email;
                 $mail_subject = $self->lang()->translate('Your login details...');
                 $parser->setPath(CAT_PATH . '/templates/' . DEFAULT_TEMPLATE . '/templates/' . CAT_Registry::get('DEFAULT_THEME_VARIANT'));
                 $parser->setFallbackPath(CAT_PATH . '/account/templates/default/');
                 $mail_message = $parser->get('account_forgotpw_mail_body', array('LOGIN_DISPLAY_NAME' => $results_array['display_name'], 'LOGIN_WEBSITE_TITLE' => WEBSITE_TITLE, 'SERVER_EMAIL' => SERVER_EMAIL, 'CATMAILER_DEFAULT_SENDERNAME' => CATMAILER_DEFAULT_SENDERNAME, 'LOGIN_NAME' => $results_array['username'], 'LOGIN_PASSWORD' => $new_pass));
                 $mail_message_html = $parser->get('account_forgotpw_mail_body_html', array('LOGIN_DISPLAY_NAME' => $results_array['display_name'], 'LOGIN_WEBSITE_TITLE' => WEBSITE_TITLE, 'SERVER_EMAIL' => SERVER_EMAIL, 'CATMAILER_DEFAULT_SENDERNAME' => CATMAILER_DEFAULT_SENDERNAME, 'LOGIN_NAME' => $results_array['username'], 'LOGIN_PASSWORD' => $new_pass));
                 // Try sending the email
                 $mailer = CAT_Helper_Mail::getInstance();
                 if (is_object($mailer) && $mailer->sendMail(SERVER_EMAIL, $mail_to, $mail_subject, $mail_message, CATMAILER_DEFAULT_SENDERNAME, $mail_message_html)) {
                     $message = $self->lang()->translate('Your username and password have been sent to your email address');
                     $display_form = false;
                     $result = true;
                 } else {
                     // reset PW if sending mail failed
                     $self->db()->query("UPDATE `:prefix:users` SET password=:pw, lastreset='' WHERE user_id=:id", array('pw' => $old_pass, 'id' => $results_array['user_id']));
                     $message = $self->lang()->translate('Unable to email password, please contact system administrator');
                     if (is_object($mailer)) {
                         $message .= '<br />' . $mailer->getError();
                     }
                 }
             }
         }
     } else {
         // given eMail address not found
         $message = $val->lang()->translate('The email that you entered cannot be found in the database');
     }
     return array($result, $message);
 }
Example #6
0
    } else {
        trigger_error(sprintf("[ <b>%s</b> ] Can't include class.secure.php!", $_SERVER['SCRIPT_NAME']), E_USER_ERROR);
    }
}
ob_start();
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: text/html; charset:utf-8;");
$backend = CAT_Backend::getInstance('Settings', 'settings_basic');
$curr_user_is_admin = in_array(1, CAT_Users::getInstance()->get_groups_id());
if (!$curr_user_is_admin) {
    echo "<div style='border: 2px solid #CC0000; padding: 5px; text-align: center; background-color: #ffbaba;'>You're not allowed to use this function!</div>";
    exit;
}
$settings = array();
$sql = 'SELECT `name`, `value` FROM `' . CAT_TABLE_PREFIX . 'settings`';
if ($res_settings = $backend->db()->query($sql)) {
    while ($row = $res_settings->fetchRow(MYSQL_ASSOC)) {
        $settings[strtoupper($row['name'])] = $row['name'] != 'catmailer_smtp_password' ? htmlspecialchars($row['value']) : $row['value'];
    }
}
ob_clean();
// this is not the optimal solution, but as we have 2 libs only, it's good enough
$lib_to_driver = array('lib_phpmailer' => 'PHPMailer', 'lib_swift' => 'Swift');
// send mail
$mailer = CAT_Helper_Mail::getInstance($lib_to_driver[$settings['CATMAILER_LIB']]);
if ($mailer->sendMail($settings['SERVER_EMAIL'], $settings['SERVER_EMAIL'], $settings['CATMAILER_DEFAULT_SENDERNAME'], $backend->lang()->translate('This is the required test mail: CAT mailer is working'))) {
    echo "<div style='border: 2px solid #006600; padding: 5px; text-align: center; background-color: #dff2bf;'>", $backend->lang()->translate('The test eMail was sent successfully. Please check your inbox.'), "</div>";
} else {
    echo "<div style='border: 2px solid #CC0000; padding: 5px; text-align: center; background-color: #ffbaba;'>", $backend->lang()->translate('The test eMail could not be sent! Please check your settings!'), "<br />", CAT_Helper_Mail::getError(), "<br /></div>";
}
Example #7
0
 public function mail($fromaddress, $toaddress, $subject, $message, $fromname = '')
 {
     // check if mailer lib is installed
     if (count(CAT_Helper_Addons::getLibraries('mail'))) {
         return CAT_Helper_Mail::getInstance()->sendMail($fromaddress, $toaddress, $subject, $message, $fromname);
     } else {
         return false;
     }
 }