Browse Source

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.
derekmurawsky 7 years ago
parent
commit
1b2afd2bd3
7 changed files with 91 additions and 100 deletions
  1. 1 0
      .gitignore
  2. 63 0
      classes/ttrssmailer.php
  3. 3 0
      config.php-dist
  4. 3 25
      include/digest.php
  5. 1 1
      include/sanity_config.php
  6. 5 22
      plugins/mail/init.php
  7. 15 52
      register.php

+ 1 - 0
.gitignore

@@ -9,3 +9,4 @@ lock/*
 tags
 cache/htmlpurifier/*/*ser
 lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/*/*ser
+web.config

+ 63 - 0
classes/ttrssmailer.php

@@ -0,0 +1,63 @@
+<?php
+/*	@class ttrssMailer
+*	@brief A TTRSS extension to the PHPMailer class
+*	Configures default values through the __construct() function
+*	@author Derek Murawsky
+*	@version .1 (alpha)
+*
+*/
+require_once 'lib/phpmailer/class.phpmailer.php';
+require_once "config.php";
+
+class ttrssMailer extends PHPMailer {
+
+		//define all items that we want to override with defaults in PHPMailer
+		public $From = SMTP_FROM_ADDRESS;
+		public $FromName = SMTP_FROM_NAME;
+		public $CharSet = "UTF-8";
+		public $PluginDir = "lib/phpmailer/";
+		public $ContentType = "text/html"; //default email type is HTML
+		public $Host;
+		public $Port;
+		public $SMTPAuth=False;
+		public $Username;
+		public $Password;
+	
+	function __construct() {
+		$this->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;
+	}
+}
+
+?>

+ 3 - 0
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', '');

+ 3 - 25
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;
 

+ 1 - 1
include/sanity_config.php

@@ -1,3 +1,3 @@
 <?php # This file has been generated at:  Sat Feb 9 22:34:30 MSK 2013
 define('GENERATED_CONFIG_CHECK', 26);
-$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_LOGIN', 'SMTP_PASSWORD', 'CHECK_FOR_NEW_VERSION', 'ENABLE_GZIP_OUTPUT', 'PLUGINS', 'CONFIG_VERSION'); ?>
+$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'); ?>

+ 5 - 22
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();
 

+ 15 - 52
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 "<p><form method=\"GET\" action=\"index.php\">