git: 070336bc5567 - main - security/mailzu: Add support for php80
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 15 Nov 2023 11:54:23 UTC
The branch main has been updated by bofh: URL: https://cgit.FreeBSD.org/ports/commit/?id=070336bc5567aa8f8e1bdc2c2474890280b17e80 commit 070336bc5567aa8f8e1bdc2c2474890280b17e80 Author: Krzysztof <ports@bsdserwis.com> AuthorDate: 2023-11-14 17:09:14 +0000 Commit: Muhammad Moinur Rahman <bofh@FreeBSD.org> CommitDate: 2023-11-15 11:54:06 +0000 security/mailzu: Add support for php80 PR: 263614 Approved by: submitter is maintainer --- security/mailzu/Makefile | 2 +- security/mailzu/files/patch-config_langs.php | 4 +- security/mailzu/files/patch-lib-DBEngine.class.php | 9 + .../mailzu/files/patch-lib_AmavisdEngine.class.php | 11 + security/mailzu/files/patch-lib_DBAuth.class.php | 11 + security/mailzu/files/patch-lib_ExchAuth.class.php | 11 + security/mailzu/files/patch-lib_IMAPAuth.class.php | 11 + .../mailzu/files/patch-lib_LDAPEngine.class.php | 9 + security/mailzu/files/patch-lib_Link.class.php | 11 + .../mailzu/files/patch-lib_MailEngine.class.php | 11 + security/mailzu/files/patch-lib_MailMime.class.php | 27 +- .../mailzu/files/patch-lib_PHPMailer.class.php | 3085 ++++++++++++++++++++ security/mailzu/files/patch-lib_Pager.class.php | 1262 ++++++++ security/mailzu/files/patch-lib_Template.class.php | 9 + security/mailzu/files/patch-lib_htmlfilter.php | 140 +- 15 files changed, 4603 insertions(+), 10 deletions(-) diff --git a/security/mailzu/Makefile b/security/mailzu/Makefile index f1ce3496e73a..c80c527092e2 100644 --- a/security/mailzu/Makefile +++ b/security/mailzu/Makefile @@ -1,6 +1,6 @@ PORTNAME= mailzu DISTVERSION= 0.8rc3 -PORTREVISION= 10 +PORTREVISION= 11 CATEGORIES= security MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/MailZu%200.8RC3 PKGNAMESUFFIX= ${PHP_PKGNAMESUFFIX} diff --git a/security/mailzu/files/patch-config_langs.php b/security/mailzu/files/patch-config_langs.php index acda9c7f41de..21b04fafea08 100644 --- a/security/mailzu/files/patch-config_langs.php +++ b/security/mailzu/files/patch-config_langs.php @@ -6,7 +6,7 @@ 'it' => array('it([-_][[:alpha:]]{2})?|italian', 'it.lang.php', 'it', 'Italiano'), - 'pt_BR' => array('pt([-_]br)?|portuguese', 'pt_BR.lang.php', 'pt', 'Portuguese Brazilian') + 'pt_BR' => array('pt([-_]br)?|portuguese', 'pt_BR.lang.php', 'pt', 'Portuguese Brazilian'), -+ 'pl' => array('cs([-_][[:alpha:]]{2})?|polish', 'pl.lang.php', 'pl', 'Polski') ++ 'pl' => array('pl([-_][[:alpha:]]{2})?|polish', 'pl.lang.php', 'pl', 'Polski') ); // Language files directory @@ -19,7 +19,7 @@ for ($i = 0; $i < count($http_accepted); $i++) { foreach ($languages as $lang => $vals) { - if (eregi($vals[0], $http_accepted[$i])) -+ if (preg_match($vals[0], $http_accepted[$i])) ++ if (preg_match("/".$vals[0]."/", $http_accepted[$i])) return $lang; } } diff --git a/security/mailzu/files/patch-lib-DBEngine.class.php b/security/mailzu/files/patch-lib-DBEngine.class.php index 88c09dd2ed75..b859eca89497 100644 --- a/security/mailzu/files/patch-lib-DBEngine.class.php +++ b/security/mailzu/files/patch-lib-DBEngine.class.php @@ -1,5 +1,14 @@ --- lib/DBEngine.class.php.orig 2007-06-14 19:00:15 UTC +++ lib/DBEngine.class.php +@@ -67,7 +67,7 @@ class DBEngine { + * DBEngine constructor to initialize object + * @param none + */ +- function DBEngine() { ++ function __construct() { + global $conf; + + $this->dbType = $conf['db']['dbType']; @@ -133,35 +133,35 @@ class DBEngine { MAX(stattable.pending) AS pending FROM ( diff --git a/security/mailzu/files/patch-lib_AmavisdEngine.class.php b/security/mailzu/files/patch-lib_AmavisdEngine.class.php new file mode 100644 index 000000000000..230f813c3942 --- /dev/null +++ b/security/mailzu/files/patch-lib_AmavisdEngine.class.php @@ -0,0 +1,11 @@ +--- lib/AmavisdEngine.class.php.orig 2007-06-14 19:00:15 UTC ++++ lib/AmavisdEngine.class.php +@@ -48,7 +48,7 @@ class AmavisdEngine { + * $param none + * $return object Amavisd object + */ +- function AmavisdEngine($host) { ++ function __construct($host) { + + $this->socket = new Net_Socket(); + $this->port = $GLOBALS['conf']['amavisd']['spam_release_port']; diff --git a/security/mailzu/files/patch-lib_DBAuth.class.php b/security/mailzu/files/patch-lib_DBAuth.class.php new file mode 100644 index 000000000000..fa63252d7358 --- /dev/null +++ b/security/mailzu/files/patch-lib_DBAuth.class.php @@ -0,0 +1,11 @@ +--- lib/DBAuth.class.php.orig 2007-06-14 19:00:15 UTC ++++ lib/DBAuth.class.php +@@ -81,7 +81,7 @@ class DBAuth { + * DBEngine constructor to initialize object + * @param none + */ +- function DBAuth() { ++ function __construct() { + global $conf; + + $this->dbType = $conf['auth']['dbType']; diff --git a/security/mailzu/files/patch-lib_ExchAuth.class.php b/security/mailzu/files/patch-lib_ExchAuth.class.php new file mode 100644 index 000000000000..38cfbaad464d --- /dev/null +++ b/security/mailzu/files/patch-lib_ExchAuth.class.php @@ -0,0 +1,11 @@ +--- lib/ExchAuth.class.php.orig 2007-06-14 19:00:15 UTC ++++ lib/ExchAuth.class.php +@@ -55,7 +55,7 @@ class ExchAuth { + * @param string $domain + * @return boolean + */ +- function authUser($username, $password, $domain) { ++ function __construct($username, $password, $domain) { + + $fulluser = $domain.'/'.$username; + $mbox = imap_open('{'.$this->exchHost.'/imap}Inbox', $fulluser, $password); diff --git a/security/mailzu/files/patch-lib_IMAPAuth.class.php b/security/mailzu/files/patch-lib_IMAPAuth.class.php new file mode 100644 index 000000000000..db38328ffa02 --- /dev/null +++ b/security/mailzu/files/patch-lib_IMAPAuth.class.php @@ -0,0 +1,11 @@ +--- lib/IMAPAuth.class.php.orig 2007-06-14 19:00:15 UTC ++++ lib/IMAPAuth.class.php +@@ -36,7 +36,7 @@ class IMAPAuth { + * Constructor to initialize object + * @param none + */ +- function IMAPAuth() { ++ function __construct() { + global $conf; + + $this->imapHosts = $conf['auth']['imap_hosts']; diff --git a/security/mailzu/files/patch-lib_LDAPEngine.class.php b/security/mailzu/files/patch-lib_LDAPEngine.class.php index 05783036ec9c..aad40967fa14 100644 --- a/security/mailzu/files/patch-lib_LDAPEngine.class.php +++ b/security/mailzu/files/patch-lib_LDAPEngine.class.php @@ -1,5 +1,14 @@ --- lib/LDAPEngine.class.php.orig 2007-06-14 19:00:15 UTC +++ lib/LDAPEngine.class.php +@@ -93,7 +93,7 @@ class LDAPEngine { + /** + * LDAPEngine constructor to initialize object + */ +- function LDAPEngine() { ++ function __construct() { + global $conf; + + $this->serverType = strtolower($conf['auth']['serverType']); @@ -283,6 +283,7 @@ class LDAPEngine { */ function searchUserDN($searchFilter) { diff --git a/security/mailzu/files/patch-lib_Link.class.php b/security/mailzu/files/patch-lib_Link.class.php new file mode 100644 index 000000000000..f7ecebd0d5b5 --- /dev/null +++ b/security/mailzu/files/patch-lib_Link.class.php @@ -0,0 +1,11 @@ +--- lib/Link.class.php.orig 2007-06-14 19:00:15 UTC ++++ lib/Link.class.php +@@ -29,7 +29,7 @@ class Link { + * @param string $text_on_over text to display in status bar onmouseover + * @param string $on_over javascript to call onmouseover + */ +- function Link($url=null, $text=null, $class=null, $style=null, $text_on_over=null) { ++ function __construct($url=null, $text=null, $class=null, $style=null, $text_on_over=null) { + $this->url = $url; + $this->text = $text; + $this->_class = $class; diff --git a/security/mailzu/files/patch-lib_MailEngine.class.php b/security/mailzu/files/patch-lib_MailEngine.class.php new file mode 100644 index 000000000000..4ad9fcc9cbc0 --- /dev/null +++ b/security/mailzu/files/patch-lib_MailEngine.class.php @@ -0,0 +1,11 @@ +--- lib/MailEngine.class.php.orig 2007-06-14 19:00:15 UTC ++++ lib/MailEngine.class.php +@@ -48,7 +48,7 @@ class MailEngine { + * $param string The mail addr of the reader + * $return object MailEngine object + */ +- function MailEngine($mail_id, $recip) { ++ function __construct($mail_id, $recip) { + $this->recipient = $recip; + $this->getRawContent($mail_id); + $this->msg_error = false; diff --git a/security/mailzu/files/patch-lib_MailMime.class.php b/security/mailzu/files/patch-lib_MailMime.class.php index b44eb75f73fd..d8c05a9b0ebd 100644 --- a/security/mailzu/files/patch-lib_MailMime.class.php +++ b/security/mailzu/files/patch-lib_MailMime.class.php @@ -1,6 +1,24 @@ --- lib/MailMime.class.php.orig 2007-06-14 19:00:15 UTC +++ lib/MailMime.class.php -@@ -94,8 +94,14 @@ function MsgParseBody($struct) { +@@ -59,9 +59,15 @@ function MsgParseBody($struct) { + + global $filelist; + global $errors; +- $ctype_p = strtolower(trim($struct->ctype_primary)); +- $ctype_s = strtolower(trim($struct->ctype_secondary)); + ++ if ( is_object( $struct) ) { ++ $ctype_p = strtolower(trim($struct->ctype_primary)); ++ $ctype_s = strtolower(trim($struct->ctype_secondary)); ++ } else { ++ $ctype_p = $struct; ++ $ctype_s = ""; ++ } ++ + switch ($ctype_p) { + case "multipart": + switch ($ctype_s) { +@@ -94,8 +100,14 @@ function MsgParseBody($struct) { case "text": // Do not display attached text types @@ -17,7 +35,7 @@ array_push($filelist, $attachment); break; } -@@ -117,7 +123,9 @@ function MsgParseBody($struct) { +@@ -117,7 +129,9 @@ function MsgParseBody($struct) { default: // Save the listed filename or notify the // reader that this mail is not displayed completely @@ -28,7 +46,7 @@ $attachment ? array_push($filelist, $attachment) : $errors['Unsupported MIME objects present'] = true; } -@@ -137,9 +145,9 @@ function FindMultiAlt($parts) { +@@ -137,9 +151,9 @@ function FindMultiAlt($parts) { foreach ($parts as $cur_part) { $type = GetCtype($cur_part); if ($type == 'multipart/related') { @@ -41,11 +59,12 @@ } $altCount = count($alt_pref); for ($j = $best_view; $j < $altCount; ++$j) { -@@ -163,7 +171,7 @@ function FindMultiAlt($parts) { +@@ -163,7 +177,8 @@ function FindMultiAlt($parts) { */ function FindMultiRel($struct) { $entities = array(); - $type = $struct->d_parameters['type']; ++ $type = ""; + if ( isset( $cur_part->d_parameters['type'] )) { $type = $cur_part->d_parameters['type']; } // Mozilla bug. Mozilla does not provide the parameter type. if (!$type) $type = 'text/html'; diff --git a/security/mailzu/files/patch-lib_PHPMailer.class.php b/security/mailzu/files/patch-lib_PHPMailer.class.php new file mode 100644 index 000000000000..ae290186e73c --- /dev/null +++ b/security/mailzu/files/patch-lib_PHPMailer.class.php @@ -0,0 +1,3085 @@ +--- lib/PHPMailer.class.php.orig 2007-06-14 19:00:15 UTC ++++ lib/PHPMailer.class.php +@@ -1,1541 +1,1541 @@ +-<?php +-//////////////////////////////////////////////////// +-// PHPMailer - PHP email class +-// +-// Class for sending email using either +-// sendmail, PHP mail(), or SMTP. Methods are +-// based upon the standard AspEmail(tm) classes. +-// +-// Copyright (C) 2001 - 2003 Brent R. Matzelle +-// +-// License: LGPL, see LICENSE +-//////////////////////////////////////////////////// +- +-/** +- * PHPMailer - PHP email transport class +- * @package PHPMailer +- * @author Brent R. Matzelle +- * @copyright 2001 - 2003 Brent R. Matzelle +- */ +-class PHPMailer +-{ +- ///////////////////////////////////////////////// +- // PUBLIC VARIABLES +- ///////////////////////////////////////////////// +- +- /** +- * Email priority (1 = High, 3 = Normal, 5 = low). +- * @var int +- */ +- var $Priority = 3; +- +- /** +- * Sets the CharSet of the message. +- * @var string +- */ +- var $CharSet = "iso-8859-1"; +- +- /** +- * Sets the Content-type of the message. +- * @var string +- */ +- var $ContentType = "text/plain"; +- +- /** +- * Sets the Encoding of the message. Options for this are "8bit", +- * "7bit", "binary", "base64", and "quoted-printable". +- * @var string +- */ +- var $Encoding = "8bit"; +- +- /** +- * Holds the most recent mailer error message. +- * @var string +- */ +- var $ErrorInfo = ""; +- +- /** +- * Sets the From email address for the message. +- * @var string +- */ +- var $From = "root@localhost"; +- +- /** +- * Sets the From name of the message. +- * @var string +- */ +- var $FromName = "Root User"; +- +- /** +- * Sets the Sender email (Return-Path) of the message. If not empty, +- * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. +- * @var string +- */ +- var $Sender = ""; +- +- /** +- * Sets the Subject of the message. +- * @var string +- */ +- var $Subject = ""; +- +- /** +- * Sets the Body of the message. This can be either an HTML or text body. +- * If HTML then run IsHTML(true). +- * @var string +- */ +- var $Body = ""; +- +- /** +- * Sets the text-only body of the message. This automatically sets the +- * email to multipart/alternative. This body can be read by mail +- * clients that do not have HTML email capability such as mutt. Clients +- * that can read HTML will view the normal Body. +- * @var string +- */ +- var $AltBody = ""; +- +- /** +- * Sets word wrapping on the body of the message to a given number of +- * characters. +- * @var int +- */ +- var $WordWrap = 0; +- +- /** +- * Method to send mail: ("mail", "sendmail", or "smtp"). +- * @var string +- */ +- var $Mailer = "mail"; +- +- /** +- * Sets the path of the sendmail program. +- * @var string +- */ +- var $Sendmail = "/usr/sbin/sendmail"; +- +- /** +- * Path to PHPMailer plugins. This is now only useful if the SMTP class +- * is in a different directory than the PHP include path. +- * @var string +- */ +- var $PluginDir = ""; +- +- /** +- * Holds PHPMailer version. +- * @var string +- */ +- var $Version = "1.72"; +- +- /** +- * Sets the email address that a reading confirmation will be sent. +- * @var string +- */ +- var $ConfirmReadingTo = ""; +- +- /** +- * Sets the hostname to use in Message-Id and Received headers +- * and as default HELO string. If empty, the value returned +- * by SERVER_NAME is used or 'localhost.localdomain'. +- * @var string +- */ +- var $Hostname = ""; +- +- ///////////////////////////////////////////////// +- // SMTP VARIABLES +- ///////////////////////////////////////////////// +- +- /** +- * Sets the SMTP hosts. All hosts must be separated by a +- * semicolon. You can also specify a different port +- * for each host by using this format: [hostname:port] +- * (e.g. "smtp1.example.com:25;smtp2.example.com"). +- * Hosts will be tried in order. +- * @var string +- */ +- var $Host = "localhost"; +- +- /** +- * Sets the default SMTP server port. +- * @var int +- */ +- var $Port = 25; +- +- /** +- * Sets the SMTP HELO of the message (Default is $Hostname). +- * @var string +- */ +- var $Helo = ""; +- +- /** +- * Sets SMTP authentication. Utilizes the Username and Password variables. +- * @var bool +- */ +- var $SMTPAuth = false; +- +- /** +- * Sets SMTP username. +- * @var string +- */ +- var $Username = ""; +- +- /** +- * Sets SMTP password. +- * @var string +- */ +- var $Password = ""; +- +- /** +- * Sets the SMTP server timeout in seconds. This function will not +- * work with the win32 version. +- * @var int +- */ +- var $Timeout = 10; +- +- /** +- * Sets SMTP class debugging on or off. +- * @var bool +- */ +- var $SMTPDebug = false; +- +- /** +- * Prevents the SMTP connection from being closed after each mail +- * sending. If this is set to true then to close the connection +- * requires an explicit call to SmtpClose(). +- * @var bool +- */ +- var $SMTPKeepAlive = false; +- +- /**#@+ +- * @access private +- */ +- var $smtp = NULL; +- var $to = array(); +- var $cc = array(); +- var $bcc = array(); +- var $ReplyTo = array(); +- var $attachment = array(); +- var $CustomHeader = array(); +- var $message_type = ""; +- var $boundary = array(); +- var $language = array(); +- var $error_count = 0; +- var $LE = "\n"; +- /**#@-*/ +- +- ///////////////////////////////////////////////// +- // CONSTRUCTOR +- ///////////////////////////////////////////////// +- /** +- * Constructor, just set up language +- * @param none +- * @return void +- */ +- function PHPMailer() { +- global $conf; +- global $charset; +- +- $this->CharSet = $charset; +- +- $this->SetLanguage(); +- +- $this->Mailer = $conf['app']['emailType']; +- +- if ($this->Mailer == 'smtp') { // Set smtp variables +- $this->Host = $conf['app']['smtpHost']; +- $this->Port = $conf['app']['smtpPort']; +- } +- +- if ($this->Mailer == 'sendmail') // Set sendmail variables +- $this->Sendmail = $conf['app']['sendmailPath']; +- +- if ($this->Mailer == 'qmail') // Set qmail variables +- $this->Sendmail = $conf['app']['qmailPath']; +- } +- +- ///////////////////////////////////////////////// +- // VARIABLE METHODS +- ///////////////////////////////////////////////// +- +- /** +- * Sets message type to HTML. +- * @param bool $bool +- * @return void +- */ +- function IsHTML($bool) { +- if($bool == true) +- $this->ContentType = "text/html"; +- else +- $this->ContentType = "text/plain"; +- } +- +- /** +- * Sets Mailer to send message using SMTP. +- * @return void +- */ +- function IsSMTP() { +- $this->Mailer = "smtp"; +- } +- +- /** +- * Sets Mailer to send message using PHP mail() function. +- * @return void +- */ +- function IsMail() { +- $this->Mailer = "mail"; +- } +- +- /** +- * Sets Mailer to send message using the $Sendmail program. +- * @return void +- */ +- function IsSendmail() { +- $this->Mailer = "sendmail"; +- } +- +- /** +- * Sets Mailer to send message using the qmail MTA. +- * @return void +- */ +- function IsQmail() { +- $this->Sendmail = "/var/qmail/bin/sendmail"; +- $this->Mailer = "sendmail"; +- } +- +- +- ///////////////////////////////////////////////// +- // RECIPIENT METHODS +- ///////////////////////////////////////////////// +- +- /** +- * Adds a "To" address. +- * @param string $address +- * @param string $name +- * @return void +- */ +- function AddAddress($address, $name = "") { +- $cur = count($this->to); +- $this->to[$cur][0] = trim($address); +- $this->to[$cur][1] = $name; +- } +- +- /** +- * Adds a "Cc" address. Note: this function works +- * with the SMTP mailer on win32, not with the "mail" +- * mailer. +- * @param string $address +- * @param string $name +- * @return void +- */ +- function AddCC($address, $name = "") { +- $cur = count($this->cc); +- $this->cc[$cur][0] = trim($address); +- $this->cc[$cur][1] = $name; +- } +- +- /** +- * Adds a "Bcc" address. Note: this function works +- * with the SMTP mailer on win32, not with the "mail" +- * mailer. +- * @param string $address +- * @param string $name +- * @return void +- */ +- function AddBCC($address, $name = "") { +- $cur = count($this->bcc); +- $this->bcc[$cur][0] = trim($address); +- $this->bcc[$cur][1] = $name; +- } +- +- /** +- * Adds a "Reply-to" address. +- * @param string $address +- * @param string $name +- * @return void +- */ +- function AddReplyTo($address, $name = "") { +- $cur = count($this->ReplyTo); +- $this->ReplyTo[$cur][0] = trim($address); +- $this->ReplyTo[$cur][1] = $name; +- } +- +- +- ///////////////////////////////////////////////// +- // MAIL SENDING METHODS +- ///////////////////////////////////////////////// +- +- /** +- * Creates message and assigns Mailer. If the message is +- * not sent successfully then it returns false. Use the ErrorInfo +- * variable to view description of the error. +- * @return bool +- */ +- function Send() { +- $header = ""; +- $body = ""; +- $result = true; +- +- if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) +- { +- $this->SetError($this->Lang("provide_address")); +- return false; +- } +- +- // Set whether the message is multipart/alternative +- if(!empty($this->AltBody)) +- $this->ContentType = "multipart/alternative"; +- +- $this->error_count = 0; // reset errors +- $this->SetMessageType(); +- $header .= $this->CreateHeader(); +- $body = $this->CreateBody(); +- +- // Nick Korbel - 08-21-2005 +- if (version_compare('4.3.0',phpversion(), '<=') == 1) { +- $this->Subject = html_entity_decode($this->Subject, ENT_COMPAT, $this->CharSet); +- if ($this->ContentType != "text/html") +- $body = html_entity_decode($body, ENT_COMPAT, $this->CharSet); +- } +- +- if($body == "") { return false; } +- +- // Choose the mailer +- switch($this->Mailer) +- { +- case "sendmail": +- $result = $this->SendmailSend($header, $body); +- break; +- case "mail": +- $result = $this->MailSend($header, $body); +- break; +- case "smtp": +- $result = $this->SmtpSend($header, $body); +- break; +- default: +- $this->SetError($this->Mailer . $this->Lang("mailer_not_supported")); +- $result = false; +- break; +- } +- +- return $result; +- } +- +- /** +- * Sends mail using the $Sendmail program. +- * @access private +- * @return bool +- */ +- function SendmailSend($header, $body) { +- if ($this->Sender != "") +- $sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender); +- else +- $sendmail = sprintf("%s -oi -t", $this->Sendmail); +- +- if(!@$mail = popen($sendmail, "w")) +- { +- $this->SetError($this->Lang("execute") . $this->Sendmail); +- return false; +- } +- +- fputs($mail, $header); +- fputs($mail, $body); +- +- $result = pclose($mail) >> 8 & 0xFF; +- if($result != 0) +- { +- $this->SetError($this->Lang("execute") . $this->Sendmail); +- return false; +- } +- +- return true; +- } +- +- /** +- * Sends mail using the PHP mail() function. +- * @access private +- * @return bool +- */ +- function MailSend($header, $body) { +- $to = ""; +- for($i = 0; $i < count($this->to); $i++) +- { +- if($i != 0) { $to .= ", "; } +- $to .= $this->to[$i][0]; +- } +- +- if ($this->Sender != "" && strlen(ini_get("safe_mode"))< 1) +- { +- $old_from = ini_get("sendmail_from"); +- ini_set("sendmail_from", $this->Sender); +- $params = sprintf("-oi -f %s", $this->Sender); +- $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, +- $header, $params); +- } +- else +- $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header); +- +- if (isset($old_from)) +- ini_set("sendmail_from", $old_from); +- +- if(!$rt) +- { +- $this->SetError($this->Lang("instantiate")); +- return false; +- } +- +- return true; +- } +- +- /** +- * Sends mail via SMTP using PhpSMTP (Author: +- * Chris Ryan). Returns bool. Returns false if there is a +- * bad MAIL FROM, RCPT, or DATA input. +- * @access private +- * @return bool +- */ +- function SmtpSend($header, $body) { +- include_once($this->PluginDir . "Smtp.class.php"); +- $error = ""; +- $bad_rcpt = array(); +- +- if(!$this->SmtpConnect()) +- return false; +- +- $smtp_from = ($this->Sender == "") ? $this->From : $this->Sender; +- if(!$this->smtp->Mail($smtp_from)) +- { +- $error = $this->Lang("from_failed") . $smtp_from; +- $this->SetError($error); +- $this->smtp->Reset(); +- return false; +- } +- +- // Attempt to send attach all recipients +- for($i = 0; $i < count($this->to); $i++) +- { +- if(!$this->smtp->Recipient($this->to[$i][0])) +- $bad_rcpt[] = $this->to[$i][0]; +- } +- for($i = 0; $i < count($this->cc); $i++) +- { +- if(!$this->smtp->Recipient($this->cc[$i][0])) +- $bad_rcpt[] = $this->cc[$i][0]; +- } +- for($i = 0; $i < count($this->bcc); $i++) +- { +- if(!$this->smtp->Recipient($this->bcc[$i][0])) +- $bad_rcpt[] = $this->bcc[$i][0]; +- } +- +- if(count($bad_rcpt) > 0) // Create error message +- { +- for($i = 0; $i < count($bad_rcpt); $i++) +- { +- if($i != 0) { $error .= ", "; } +- $error .= $bad_rcpt[$i]; +- } +- $error = $this->Lang("recipients_failed") . $error; +- $this->SetError($error); +- $this->smtp->Reset(); +- return false; +- } +- +- if(!$this->smtp->Data($header . $body)) +- { +- $this->SetError($this->Lang("data_not_accepted")); +- $this->smtp->Reset(); +- return false; +- } +- if($this->SMTPKeepAlive == true) +- $this->smtp->Reset(); +- else +- $this->SmtpClose(); +- +- return true; +- } +- +- /** +- * Initiates a connection to an SMTP server. Returns false if the +- * operation failed. +- * @access private +- * @return bool +- */ +- function SmtpConnect() { +- if($this->smtp == NULL) { $this->smtp = new SMTP(); } +- +- $this->smtp->do_debug = $this->SMTPDebug; +- $hosts = explode(";", $this->Host); +- $index = 0; +- $connection = ($this->smtp->Connected()); +- +- // Retry while there is no connection +- while($index < count($hosts) && $connection == false) +- { +- if(strstr($hosts[$index], ":")) +- list($host, $port) = explode(":", $hosts[$index]); +- else +- { +- $host = $hosts[$index]; +- $port = $this->Port; +- } +- +- if($this->smtp->Connect($host, $port, $this->Timeout)) +- { +- if ($this->Helo != '') +- $this->smtp->Hello($this->Helo); +- else +- $this->smtp->Hello($this->ServerHostname()); +- +- if($this->SMTPAuth) +- { +- if(!$this->smtp->Authenticate($this->Username, +- $this->Password)) +- { +- $this->SetError($this->Lang("authenticate")); +- $this->smtp->Reset(); +- $connection = false; +- } +- } +- $connection = true; +- } +- $index++; +- } +- if(!$connection) +- $this->SetError($this->Lang("connect_host")); +- +- return $connection; +- } +- +- /** +- * Closes the active SMTP session if one exists. +- * @return void +- */ +- function SmtpClose() { +- if($this->smtp != NULL) +- { +- if($this->smtp->Connected()) +- { +- $this->smtp->Quit(); +- $this->smtp->Close(); +- } +- } +- } +- +- /** +- * Sets the language for all class error messages. Always in English. +- * @param none +- * @access public +- * @return bool +- */ +- function SetLanguage() { +- /** +- * Only printing errors in english +- */ +- $PHPMAILER_LANG = array(); +- +- $PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' . +- 'recipient email address.'; +- $PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.'; +- $PHPMAILER_LANG["execute"] = 'Could not execute: '; +- $PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.'; +- $PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.'; +- $PHPMAILER_LANG["from_failed"] = 'The following From address failed: '; +- $PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' . +- 'recipients failed: '; +- $PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.'; +- $PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.'; +- $PHPMAILER_LANG["file_access"] = 'Could not access file: '; +- $PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: '; +- $PHPMAILER_LANG["encoding"] = 'Unknown encoding: '; +- +- $this->language = $PHPMAILER_LANG; +- +- return true; +- } +- +- ///////////////////////////////////////////////// +- // MESSAGE CREATION METHODS +- ///////////////////////////////////////////////// +- +- /** +- * Creates recipient headers. +- * @access private +- * @return string +- */ +- function AddrAppend($type, $addr) { +- $addr_str = $type . ": "; +- $addr_str .= $this->AddrFormat($addr[0]); +- if(count($addr) > 1) +- { +- for($i = 1; $i < count($addr); $i++) +- $addr_str .= ", " . $this->AddrFormat($addr[$i]); +- } +- $addr_str .= $this->LE; +- +- return $addr_str; +- } +- +- /** +- * Formats an address correctly. +- * @access private +- * @return string +- */ +- function AddrFormat($addr) { +- if(empty($addr[1])) +- $formatted = $addr[0]; +- else +- { +- $formatted = $this->EncodeHeader($addr[1], 'phrase') . " <" . +- $addr[0] . ">"; +- } +- +- return $formatted; +- } +- +- /** +- * Wraps message for use with mailers that do not +- * automatically perform wrapping and for quoted-printable. +- * Original written by philippe. +- * @access private +- * @return string +- */ +- function WrapText($message, $length, $qp_mode = false) { +- $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE; +- +- $message = $this->FixEOL($message); +- if (substr($message, -1) == $this->LE) +- $message = substr($message, 0, -1); +- +- $line = explode($this->LE, $message); *** 3813 LINES SKIPPED ***