From 1b2afd2bd3dc19cdd36da47cc52040a83cdb3b68 Mon Sep 17 00:00:00 2001 From: derekmurawsky Date: Fri, 22 Mar 2013 16:25:12 -0400 Subject: [PATCH] Additions: classes/trssmailer.php - Created class TTRSS mailer which extends phpmailer and sets the default mail settings upon instantiation. Class includes quickmail function that allows for a quick email send with no extra configurion necessary. Changes: config.php-dist - Added the smtp port option include/digest.php - Converted it to use the new ttrrssmailer class include/sanity_config.php - Added the smtp port option to the sanity check plugins/mail/init.php - Modified to use ttrssmailer class. This particular configuration shows a hybrid use case. register.php = Modified to use ttrssmailer class. All code was tested and functioned on my local machine. --- .gitignore | 1 + classes/ttrssmailer.php | 63 ++++++++++++++++++++++++++++++++++++ config.php-dist | 3 ++ include/digest.php | 28 ++-------------- include/sanity_config.php | 2 +- plugins/mail/init.php | 27 +++------------- register.php | 67 +++++++++------------------------------ 7 files changed, 91 insertions(+), 100 deletions(-) create mode 100644 classes/ttrssmailer.php diff --git a/.gitignore b/.gitignore index 9c7c138e..d98c0efc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ lock/* tags cache/htmlpurifier/*/*ser lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/*/*ser +web.config diff --git a/classes/ttrssmailer.php b/classes/ttrssmailer.php new file mode 100644 index 00000000..1b450c50 --- /dev/null +++ b/classes/ttrssmailer.php @@ -0,0 +1,63 @@ +SetLanguage("en", "lib/phpmailer/language/"); + //if SMTP_HOST is specified, use SMTP to send mail directly + if (SMTP_HOST) { + $Host = SMTP_HOST; + $Mailer = "smtp"; + } + //if SMTP_PORT is specified, assign it. Otherwise default to port 25 + if(SMTP_PORT){ + $Port = SMTP_PORT; + }else{ + $Port = "25"; + } + + //if SMTP_LOGIN is specified, set credentials and enable auth + if(SMTP_LOGIN){ + $SMTPAuth = true; + $Username = SMTP_LOGIN; + $Password = SMTP_PASSWORD; + } + } + /* @brief a simple mail function to send email using the defaults + * This will send an HTML email using the configured defaults + * @param $toAddress A string with the recipients email address + * @param $toName A string with the recipients name + * @param $subject A string with the emails subject + * @param $body A string containing the body of the email + */ + public function quickMail ($toAddress, $toName, $subject, $body, $altbody=""){ + $this->addAddress($toAddress, $toName); + $this->Subject = $subject; + $this->Body = $body; + $rc=$this->send(); + return $rc; + } +} + +?> \ No newline at end of file diff --git a/config.php-dist b/config.php-dist index a5a7fc3e..192cb15f 100644 --- a/config.php-dist +++ b/config.php-dist @@ -156,6 +156,9 @@ define('SMTP_HOST', ''); // SMTP Host to send outgoing mail. Blank - use system MTA. + + define('SMTP_PORT',''); + // SMTP port to sent outgoing mail. Default is 25. define('SMTP_LOGIN', ''); define('SMTP_PASSWORD', ''); diff --git a/include/digest.php b/include/digest.php index 93ce373a..ab29d943 100644 --- a/include/digest.php +++ b/include/digest.php @@ -8,7 +8,7 @@ */ function send_headlines_digests($link, $debug = false) { - require_once 'lib/phpmailer/class.phpmailer.php'; + require_once 'classes/ttrssmailer.php'; $user_limit = 15; // amount of users to process (e.g. emails to send out) $limit = 1000; // maximum amount of headlines to include @@ -50,31 +50,9 @@ if ($headlines_count > 0) { - $mail = new PHPMailer(); + $mail = new ttrssMailer(); - $mail->PluginDir = "lib/phpmailer/"; - $mail->SetLanguage("en", "lib/phpmailer/language/"); - - $mail->CharSet = "UTF-8"; - - $mail->From = SMTP_FROM_ADDRESS; - $mail->FromName = SMTP_FROM_NAME; - $mail->AddAddress($line["email"], $line["login"]); - - if (SMTP_HOST) { - $mail->Host = SMTP_HOST; - $mail->Mailer = "smtp"; - $mail->SMTPAuth = SMTP_LOGIN != ''; - $mail->Username = SMTP_LOGIN; - $mail->Password = SMTP_PASSWORD; - } - - $mail->IsHTML(true); - $mail->Subject = DIGEST_SUBJECT; - $mail->Body = $digest; - $mail->AltBody = $digest_text; - - $rc = $mail->Send(); + $rc = $mail->quickMail($line["email"], $line["login"] , DIGEST_SUBJECT, $digest, $digest_text); if (!$rc && $debug) print "ERROR: " . $mail->ErrorInfo; diff --git a/include/sanity_config.php b/include/sanity_config.php index d4a468f6..80be1434 100644 --- a/include/sanity_config.php +++ b/include/sanity_config.php @@ -1,3 +1,3 @@ +$requred_defines = array( 'DB_TYPE', 'DB_HOST', 'DB_USER', 'DB_NAME', 'DB_PASS', 'MYSQL_CHARSET', 'SELF_URL_PATH', 'SINGLE_USER_MODE', 'SIMPLE_UPDATE_MODE', 'PHP_EXECUTABLE', 'LOCK_DIRECTORY', 'CACHE_DIR', 'ICONS_DIR', 'ICONS_URL', 'AUTH_AUTO_CREATE', 'AUTH_AUTO_LOGIN', 'FORCE_ARTICLE_PURGE', 'PUBSUBHUBBUB_HUB', 'PUBSUBHUBBUB_ENABLED', 'SPHINX_ENABLED', 'SPHINX_INDEX', 'ENABLE_REGISTRATION', 'REG_NOTIFY_ADDRESS', 'REG_MAX_USERS', 'SESSION_COOKIE_LIFETIME', 'SESSION_EXPIRE_TIME', 'SESSION_CHECK_ADDRESS', 'SMTP_FROM_NAME', 'SMTP_FROM_ADDRESS', 'DIGEST_SUBJECT', 'SMTP_HOST', 'SMTP_PORT', 'SMTP_LOGIN', 'SMTP_PASSWORD', 'CHECK_FOR_NEW_VERSION', 'ENABLE_GZIP_OUTPUT', 'PLUGINS', 'CONFIG_VERSION'); ?> diff --git a/plugins/mail/init.php b/plugins/mail/init.php index 30a417a1..9d92781d 100644 --- a/plugins/mail/init.php +++ b/plugins/mail/init.php @@ -137,7 +137,7 @@ class Mail extends Plugin { function sendEmail() { $secretkey = $_REQUEST['secretkey']; - require_once 'lib/phpmailer/class.phpmailer.php'; + require_once 'classes/ttrssmailer.php'; $reply = array(); @@ -146,35 +146,18 @@ class Mail extends Plugin { $_SESSION['email_secretkey'] = ''; - $destination = $_REQUEST['destination']; - $subject = $_REQUEST['subject']; - $content = $_REQUEST['content']; - $replyto = strip_tags($_SESSION['email_replyto']); $fromname = strip_tags($_SESSION['email_fromname']); - $mail = new PHPMailer(); - - $mail->PluginDir = "lib/phpmailer/"; - $mail->SetLanguage("en", "lib/phpmailer/language/"); - - $mail->CharSet = "UTF-8"; + $mail = new ttrssMailer(); $mail->From = $replyto; $mail->FromName = $fromname; - $mail->AddAddress($destination); - - if (SMTP_HOST) { - $mail->Host = SMTP_HOST; - $mail->Mailer = "smtp"; - $mail->SMTPAuth = SMTP_LOGIN != ''; - $mail->Username = SMTP_LOGIN; - $mail->Password = SMTP_PASSWORD; - } + $mail->AddAddress($_REQUEST['destination']); $mail->IsHTML(false); - $mail->Subject = $subject; - $mail->Body = $content; + $mail->Subject = $_REQUEST['subject']; + $mail->Body = $_REQUEST['content']; $rc = $mail->Send(); diff --git a/register.php b/register.php index 678b3c31..8c9869a5 100644 --- a/register.php +++ b/register.php @@ -7,7 +7,7 @@ set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR . get_include_path()); - require_once 'lib/phpmailer/class.phpmailer.php'; + require_once 'classes/ttrssmailer.php'; require_once "functions.php"; require_once "sessions.php"; @@ -306,65 +306,28 @@ "\n". "If that wasn't you, just ignore this message. Thanks."; - $mail = new PHPMailer(); - - $mail->PluginDir = "lib/phpmailer/"; - $mail->SetLanguage("en", "lib/phpmailer/language/"); - - $mail->CharSet = "UTF-8"; - - $mail->From = SMTP_FROM_ADDRESS; - $mail->FromName = SMTP_FROM_NAME; - $mail->AddAddress($email); - - if (SMTP_HOST) { - $mail->Host = SMTP_HOST; - $mail->Mailer = "smtp"; - $mail->Username = SMTP_LOGIN; - $mail->Password = SMTP_PASSWORD; - } - - // $mail->IsHTML(true); - $mail->Subject = "Registration information for Tiny Tiny RSS"; - $mail->Body = $reg_text; - // $mail->AltBody = $digest_text; - - $rc = $mail->Send(); + $mail = new ttrssMailer(); + $mail->IsHTML(false); + $rc = $mail->quickMail($email, "", "Registration information for Tiny Tiny RSS", $reg_text, false); if (!$rc) print_error($mail->ErrorInfo); - + + unset($reg_text); + unset($mail); + unset($rc); $reg_text = "Hi!\n". "\n". "New user had registered at your Tiny Tiny RSS installation.\n". "\n". "Login: $login\n". "Email: $email\n"; - - $mail = new PHPMailer(); - - $mail->PluginDir = "lib/phpmailer/"; - $mail->SetLanguage("en", "lib/phpmailer/language/"); - - $mail->CharSet = "UTF-8"; - - $mail->From = SMTP_FROM_ADDRESS; - $mail->FromName = SMTP_FROM_NAME; - $mail->AddAddress(REG_NOTIFY_ADDRESS); - - if (SMTP_HOST) { - $mail->Host = SMTP_HOST; - $mail->Mailer = "smtp"; - $mail->Username = SMTP_LOGIN; - $mail->Password = SMTP_PASSWORD; - } - - // $mail->IsHTML(true); - $mail->Subject = "Registration notice for Tiny Tiny RSS"; - $mail->Body = $reg_text; - // $mail->AltBody = $digest_text; - - $rc = $mail->Send(); - + + + $mail = new ttrssMailer(); + $mail->IsHTML(false); + $rc = $mail->quickMail(REG_NOTIFY_ADDRESS, "", "Registration notice for Tiny Tiny RSS", $reg_text, false); + if (!$rc) print_error($mail->ErrorInfo); + print_notice(__("Account created successfully.")); print "

-- 2.39.5