<?php require_once dirname(__FILE__).'/accesscheck.php'; if (defined('PHPMAILER_PATH') and PHPMAILER_PATH != '') { #require_once '/usr/share/php/libphp-phpmailer/class.phpmailer.php' require_once PHPMAILER_PATH; } else { //https://github.com/PHPMailer/PHPMailer require_once dirname(__FILE__) . '/PHPMailer/PHPMailerAutoload.php'; } class PHPlistMailer extends PHPMailer { public $WordWrap = 75; public $encoding = 'base64'; public $messageid = 0; public $destionationemail = ''; public $estimatedsize = 0; public $mailsize = 0; private $inBlast = false; public $image_types = array( 'gif' => 'image/gif', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpe' => 'image/jpeg', 'bmp' => 'image/bmp', 'png' => 'image/png', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'swf' => 'application/x-shockwave-flash' ); public $LE = "\n"; public $Hello = ''; public $timeStamp = ''; function PHPlistMailer($messageid,$email,$inBlast = true,$exceptions = false) { parent::__construct($exceptions); parent::SetLanguage('en', dirname(__FILE__) . '/PHPMailer/language/'); $this->addCustomHeader("X-phpList-version: ".VERSION); $this->addCustomHeader("X-MessageID: $messageid"); $this->addCustomHeader("X-ListMember: $email"); ## amazon SES doesn't like this /* * http://mantis.phplist.com/view.php?id=15562 * Interesting, https://mantis.phplist.com/view.php?id=16688 * says Gmail wants it. Everyone's confused. * * Also, are we "Precedence: bulk, or Precedence: list" * * I guess this should become configurable, to leave the choice up to the installation, * but what would be our default? * if (!USE_AMAZONSES) { # $this->addCustomHeader("Precedence: bulk"); } * * ok, decided: */ if (!USE_AMAZONSES && USE_PRECEDENCE_HEADER) { $this->addCustomHeader("Precedence: bulk"); } $newwrap = getConfig("wordwrap"); if ($newwrap) { $this->WordWrap = $newwrap; } if (defined('SMTP_TIMEOUT')) { $this->Timeout = sprintf('%d',SMTP_TIMEOUT); } $this->destinationemail = $email; $this->SingleTo = false; $this->CharSet = 'UTF-8';# getConfig("html_charset"); $this->inBlast = $inBlast; ### hmm, would be good to sort this out differently, but it'll work for now ## don't send test message using the blast server if (isset($_GET['page']) && $_GET['page'] == 'send') { $this->inBlast = false; } if ($this->inBlast && defined('PHPMAILERBLASTHOST') && defined('PHPMAILERBLASTPORT') && PHPMAILERBLASTHOST != '') { $this->Helo = getConfig("website"); $this->Host = PHPMAILERBLASTHOST; $this->Port = PHPMAILERBLASTPORT; if ( isset($GLOBALS['phpmailer_smtpuser']) && $GLOBALS['phpmailer_smtpuser'] != '' && isset($GLOBALS['phpmailer_smtppassword']) && $GLOBALS['phpmailer_smtppassword']) { $this->Username = $GLOBALS['phpmailer_smtpuser']; $this->Password = $GLOBALS['phpmailer_smtppassword']; $this->SMTPAuth = true; } $this->Mailer = "smtp"; } elseif (!$this->inBlast && defined('PHPMAILERTESTHOST') && PHPMAILERTESTHOST != '') { if (defined('PHPMAILERPORT')) { $this->Port = PHPMAILERPORT; } //logEvent('Sending email via '.PHPMAILERHOST); $this->Helo = getConfig("website"); $this->Host = PHPMAILERTESTHOST; if ( isset($GLOBALS['phpmailer_smtpuser']) && $GLOBALS['phpmailer_smtpuser'] != '' && isset($GLOBALS['phpmailer_smtppassword']) && $GLOBALS['phpmailer_smtppassword']) { $this->Username = $GLOBALS['phpmailer_smtpuser']; $this->Password = $GLOBALS['phpmailer_smtppassword']; $this->SMTPAuth = true; } $this->Mailer = "smtp"; } elseif (defined('PHPMAILERHOST') && PHPMAILERHOST != '') { if (defined('PHPMAILERPORT')) { $this->Port = PHPMAILERPORT; } //logEvent('Sending email via '.PHPMAILERHOST); $this->Helo = getConfig("website"); $this->Host = PHPMAILERHOST; if ( isset($GLOBALS['phpmailer_smtpuser']) && $GLOBALS['phpmailer_smtpuser'] != '' && isset($GLOBALS['phpmailer_smtppassword']) && $GLOBALS['phpmailer_smtppassword']) { $this->Username = $GLOBALS['phpmailer_smtpuser']; $this->Password = $GLOBALS['phpmailer_smtppassword']; $this->SMTPAuth = true; } $this->Mailer = "smtp"; } else { $this->isMail(); } if (empty($_SERVER['SERVER_NAME']) || empty($this->Hostname)) { $this->Hostname = getConfig("domain"); } if (defined('PHPMAILER_SECURE') && PHPMAILER_SECURE) { $this->SMTPSecure = PHPMAILER_SECURE; } if ($GLOBALS["message_envelope"]) { $this->Sender = $GLOBALS["message_envelope"]; $this->addCustomHeader("Bounces-To: ".$GLOBALS["message_envelope"]); ## one to work on at a later stage # $this->addCustomHeader("Return-Receipt-To: ".$GLOBALS["message_envelope"]); } ## when the email is generated from a webpage (quite possible :-) add a "received line" to identify the origin if (!empty($_SERVER['REMOTE_ADDR'])) { $this->add_timestamp(); } $this->messageid = $messageid; } function add_html($html,$text = '',$templateid = 0) { $this->Body = $html; $this->IsHTML(true); if ($text) { $this->add_text($text); } $this->Encoding = HTMLEMAIL_ENCODING; $this->find_html_images($templateid); } function add_timestamp() { #0013076: # Add a line like Received: from [10.1.2.3] by website.example.com with HTTP; 01 Jan 2003 12:34:56 -0000 # more info: http://www.spamcop.net/fom-serve/cache/369.html $ip_address = $_SERVER['REMOTE_ADDR']; if ( !empty($_SERVER['REMOTE_HOST']) ) { $ip_domain = $_SERVER['REMOTE_HOST']; } else { $ip_domain = gethostbyaddr($ip_address); } if ( $ip_domain != $ip_address ) { $from = "$ip_domain [$ip_address]"; } else { $from = "[$ip_address]"; } $hostname = $_SERVER["HTTP_HOST"]; $request_time = date('r',$_SERVER['REQUEST_TIME']); $sTimeStamp = "from $from by $hostname with HTTP; $request_time"; $this->addTimeStamp($sTimeStamp); } function AddTimeStamp($sTimeStamp) { $this->timeStamp = $sTimeStamp; } function add_text($text) { if (!$this->Body) { $this->IsHTML(false); $this->Body = html_entity_decode($text ,ENT_QUOTES, 'UTF-8' ); #$text; } else { $this->AltBody = html_entity_decode($text ,ENT_QUOTES, 'UTF-8' );#$text; } } function append_text($text) { if ($this->AltBody) { $this->AltBody .= html_entity_decode($text ,ENT_QUOTES, 'UTF-8' );#$text; } else { $this->Body .= html_entity_decode($text."\n" ,ENT_QUOTES, 'UTF-8' );#$text; } } function build_message() { } function CreateHeader() { $parentheader = parent::CreateHeader(); if (!empty($this->timeStamp)) { $header = 'Received: '.$this->timeStamp.$this->LE.$parentheader; } else { $header = $parentheader; } return $header; } function CreateBody() { $body = parent::CreateBody(); /* if ($this->ContentType != 'text/plain') { foreach ($GLOBALS['plugins'] as $plugin) { $plreturn = $plugin->mimeWrap($this->messageid,$body,$this->header,$this->ContentTypeHeader,$this->destinationemail); if (is_array($plreturn) && sizeof($plreturn) == 3) { $this->header = $plreturn[0]; $body = $plreturn[1]; $this->ContentTypeHeader = $plreturn[2]; } } } */ return $body; } function compatSend($to_name = "", $to_addr, $from_name, $from_addr, $subject = '', $headers = '',$envelope = '') { if (!empty($from_addr) && method_exists($this,'SetFrom')) { $this->SetFrom($from_addr, $from_name); } else { $this->From = $from_addr; $this->FromName = $from_name; } if (!empty($GLOBALS["developer_email"])) { # make sure we are not sending out emails to real users # when developing $this->AddAddress($GLOBALS["developer_email"]); if ($GLOBALS["developer_email"] != $to_addr) { $this->Body = 'X-Originally to: '.$to_addr."\n\n".$this->Body; } } else { $this->AddAddress($to_addr); } $this->Subject = $subject; if ($this->Body) { ## allow plugins to add header lines foreach ($GLOBALS['plugins'] as $pluginname => $plugin) { # print "Checking Destination for ".$plugin->name."<br/>"; $pluginHeaders = $plugin->messageHeaders($this); if ($pluginHeaders && sizeof($pluginHeaders)) { foreach ($pluginHeaders as $headerItem => $headerValue) { ## @@TODO, do we need to sanitise them? $this->addCustomHeader($headerItem.': '.$headerValue); } } } if(!parent::Send()) { logEvent(s('Error sending email to %s',$to_addr).' '.$this->ErrorInfo); return 0; }# } else { logEvent(s('Error, empty message-body sending email to %s',$to_addr)); return 0; } return 1; } function Send() { if(!parent::Send()) { return 0; } return 1; } function add_attachment($contents,$filename,$mimetype) { ## phpmailer 2.x if (method_exists($this,'AddStringAttachment')) { $this->AddStringAttachment($contents,$filename,'base64', $mimetype); } else { ## old phpmailer // Append to $attachment array $cur = count($this->attachment); $this->attachment[$cur][0] = base64_encode($contents); $this->attachment[$cur][1] = $filename; $this->attachment[$cur][2] = $filename; $this->attachment[$cur][3] = $this->encoding; $this->attachment[$cur][4] = $mimetype; $this->attachment[$cur][5] = false; // isStringAttachment $this->attachment[$cur][6] = "attachment"; $this->attachment[$cur][7] = 0; } } function find_html_images($templateid) { #if (!$templateid) return; ## no template can be templateid 0, find the powered by image $templateid = sprintf('%d',$templateid); // Build the list of image extensions $extensions = array(); while(list($key,) = each($this->image_types)) { $extensions[] = $key; } $html_images = array(); $filesystem_images = array(); preg_match_all('/"([^"]+\.('.implode('|', $extensions).'))"/Ui', $this->Body, $images); for($i=0; $i<count($images[1]); $i++) { if($this->image_exists($templateid,$images[1][$i])){ $html_images[] = $images[1][$i]; $this->Body = str_replace($images[1][$i], basename($images[1][$i]), $this->Body); } ## addition for filesystem images if (EMBEDUPLOADIMAGES) { if($this->filesystem_image_exists($images[1][$i])){ $filesystem_images[] = $images[1][$i]; $this->Body = str_replace($images[1][$i], basename($images[1][$i]), $this->Body); } } ## end addition } if(!empty($html_images)){ // If duplicate images are embedded, they may show up as attachments, so remove them. $html_images = array_unique($html_images); sort($html_images); for($i=0; $i<count($html_images); $i++){ if($image = $this->get_template_image($templateid,$html_images[$i])){ $content_type = $this->image_types[strtolower(substr($html_images[$i], strrpos($html_images[$i], '.') + 1))]; $cid = $this->add_html_image($image, basename($html_images[$i]), $content_type); if (!empty($cid)) { $this->Body = str_replace(basename($html_images[$i]), "cid:$cid", $this->Body); } } } } ## addition for filesystem images if(!empty($filesystem_images)){ // If duplicate images are embedded, they may show up as attachments, so remove them. $filesystem_images = array_unique($filesystem_images); sort($filesystem_images); for($i=0; $i<count($filesystem_images); $i++){ if($image = $this->get_filesystem_image($filesystem_images[$i])){ $content_type = $this->image_types[strtolower(substr($filesystem_images[$i], strrpos($filesystem_images[$i], '.') + 1))]; $cid = $this->add_html_image($image, basename($filesystem_images[$i]), $content_type); if (!empty($cid)) { $this->Body = str_replace(basename($filesystem_images[$i]), "cid:$cid", $this->Body);#@@@ } } } } ## end addition } function add_html_image($contents, $name = '', $content_type='application/octet-stream') { ## in phpMailer 2 and up we cannot use AddStringAttachment, because that doesn't use a cid ## we can't write to "attachment" either, because it's private /* one way to do it, is using a temporary file, but that'll have * quite an effect on performance and also isn't backward compatible, * because EncodeFile would need to be reverted to the default file_put_contents('/tmp/'.$name,base64_decode($contents)); $cid = md5(uniqid(time())); $this->AddEmbeddedImage('/tmp/'.$name, $cid, $name,'base64', $content_type); */ /* So, for now the only way to get this working in phpMailer 2 or up is to make * the attachment array public or add the AddEmbeddedImageString method * we need to add instructions how to patch phpMailer for that. * find out here whether it's been done and give an error if not * * it's been added to phpMailer 5.2.2 * http://code.google.com/a/apache-extras.org/p/phpmailer/issues/detail?id=119 * * */ /* @@TODO additional optimisation: * * - we store the image base64 encoded * - then we decode it to pass it back to phpMailer * - when then encodes it again * - best would be to take out a step in there, but that would require more modifications * to phpMailer */ $cid = md5(uniqid(time())); if (method_exists($this,'AddEmbeddedImageString')) { $this->AddEmbeddedImageString(base64_decode($contents), $cid, $name, $this->encoding, $content_type); } elseif (method_exists($this,'AddStringEmbeddedImage')) { ## PHPMailer 5.2.5 and up renamed the method ## https://github.com/PHPMailer/PHPMailer/issues/42#issuecomment-16217354 $this->AddStringEmbeddedImage(base64_decode($contents), $cid, $name, $this->encoding, $content_type); } elseif (isset($this->attachment) && is_array($this->attachment)) { // Append to $attachment array $cur = count($this->attachment); $this->attachment[$cur][0] = base64_decode($contents); $this->attachment[$cur][1] = '';#$filename; $this->attachment[$cur][2] = $name; $this->attachment[$cur][3] = 'base64'; $this->attachment[$cur][4] = $content_type; $this->attachment[$cur][5] = true; // isStringAttachment $this->attachment[$cur][6] = "inline"; $this->attachment[$cur][7] = $cid; } else { logEvent("phpMailer needs patching to be able to use inline images from templates"); print Error("phpMailer needs patching to be able to use inline images from templates"); return; } return $cid; } ## addition for filesystem images function filesystem_image_exists($filename) { ## find the image referenced and see if it's on the server $imageroot = getConfig('uploadimageroot'); # cl_output('filesystem_image_exists '.$docroot.' '.$filename); $elements = parse_url($filename); $localfile = basename($elements['path']); $localfile = urldecode($localfile); # cl_output('CHECK'.$localfile); if (defined('UPLOADIMAGES_DIR')) { # print $_SERVER['DOCUMENT_ROOT'].$localfile; return is_file($_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/image/'.$localfile) || is_file($_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/'.$localfile) ## commandline || is_file($imageroot.'/'.$localfile); } else return is_file($_SERVER['DOCUMENT_ROOT'].$GLOBALS['pageroot'].'/'.FCKIMAGES_DIR.'/image/'.$localfile) || is_file($_SERVER['DOCUMENT_ROOT'].$GLOBALS['pageroot'].'/'.FCKIMAGES_DIR.'/'.$localfile) ## commandline || is_file('../'.FCKIMAGES_DIR.'/image/'.$localfile) || is_file('../'.FCKIMAGES_DIR.'/'.$localfile); } function get_filesystem_image($filename) { ## get the image contents $localfile = basename(urldecode($filename)); # cl_output('get file system image'.$filename.' '.$localfile); if (defined('UPLOADIMAGES_DIR')) { # print 'UPLOAD'; $imageroot = getConfig('uploadimageroot'); if (is_file($imageroot.$localfile)) { return base64_encode( file_get_contents($imageroot.$localfile)); } else { if (is_file($_SERVER['DOCUMENT_ROOT'].$localfile)) { ## save the document root to be able to retrieve the file later from commandline SaveConfig("uploadimageroot",$_SERVER['DOCUMENT_ROOT'],0,1); return base64_encode( file_get_contents($_SERVER['DOCUMENT_ROOT'].$localfile)); } elseif (is_file($_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/image/'.$localfile)) { SaveConfig("uploadimageroot",$_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/image/',0,1); return base64_encode( file_get_contents($_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/image/'.$localfile)); } elseif (is_file($_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/'.$localfile)) { SaveConfig("uploadimageroot",$_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/',0,1); return base64_encode( file_get_contents($_SERVER['DOCUMENT_ROOT'].'/'.UPLOADIMAGES_DIR.'/'.$localfile)); } } } elseif (is_file($_SERVER['DOCUMENT_ROOT'].$GLOBALS['pageroot'].'/'.FCKIMAGES_DIR.'/'.$localfile)) { $elements = parse_url($filename); $localfile = basename($elements['path']); return base64_encode( file_get_contents($_SERVER['DOCUMENT_ROOT'].$GLOBALS['pageroot'].'/'.FCKIMAGES_DIR.'/'.$localfile)); } elseif (is_file($_SERVER['DOCUMENT_ROOT'].$GLOBALS['pageroot'].'/'.FCKIMAGES_DIR.'/image/'.$localfile)) { return base64_encode( file_get_contents($_SERVER['DOCUMENT_ROOT'].$GLOBALS['pageroot'].'/'.FCKIMAGES_DIR.'/image/'.$localfile)); } elseif (is_file('../'.FCKIMAGES_DIR.'/'.$localfile)) { ## commandline return base64_encode( file_get_contents('../'.FCKIMAGES_DIR.'/'.$localfile)); } elseif (is_file('../'.FCKIMAGES_DIR.'/image/'.$localfile)) { return base64_encode( file_get_contents('../'.FCKIMAGES_DIR.'/image/'.$localfile)); } return ''; } ## end addition function image_exists($templateid,$filename) { if (basename($filename) == 'powerphplist.png') $templateid = 0; $query = ' select *' . ' from ' . $GLOBALS['tables']['templateimage'] . ' where template = ?' . ' and (filename = ? or filename = ?)'; $rs = Sql_Query_Params($query, array($templateid, $filename, basename($filename))); return Sql_Num_Rows($rs); } function get_template_image($templateid,$filename){ if (basename($filename) == 'powerphplist.png') $templateid = 0; $query = ' select data' . ' from ' . $GLOBALS['tables']['templateimage'] . ' where template = ?' . ' and (filename = ? or filename= ?)'; $rs = Sql_Query_Params($query, array($templateid, $filename, basename($filename))); $req = Sql_Fetch_Row($rs); return $req[0]; } function EncodeFile ($path, $encoding = "base64") { # as we already encoded the contents in $path, return $path return chunk_split($path, 76, $this->LE); } function AmazonSESSend($messageheader,$messagebody) { $messageheader = preg_replace('/'.$this->LE.'$/','',$messageheader); $messageheader .= $this->LE."Subject: ".$this->EncodeHeader($this->Subject).$this->LE; #print nl2br(htmlspecialchars($messageheader)); exit; $date = date('r'); $aws_signature = base64_encode(hash_hmac('sha256',$date,AWS_SECRETKEY,true)); $requestheader = array( 'Host: email.us-east-1.amazonaws.com', 'Content-Type: application/x-www-form-urlencoded', 'Date: '. $date, 'X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId='.AWS_ACCESSKEYID.',Algorithm=HMACSHA256,Signature='.$aws_signature, ); /* * using the SendEmail call $requestdata = array( 'Action' => 'SendEmail', 'Source' => $this->Sender, 'Destination.ToAddresses.member.1' => $this->destinationemail, 'Message.Subject.Data' => $this->Subject, 'Message.Body.Text.Data' => $messagebody, ); */ # print '<hr/>Rawmessage '.nl2br(htmlspecialchars($messageheader. $this->LE. $this->LE.$messagebody)); $rawmessage = base64_encode($messageheader. $this->LE.$this->LE.$messagebody); # $rawmessage = str_replace('=','',$rawmessage); $requestdata = array( 'Action' => 'SendRawEmail', 'Destinations.member.1' => $this->destinationemail, 'RawMessage.Data' => $rawmessage, ); $header = ''; foreach ($requestheader as $param) { $header .= $param.$this->LE; } $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, AWS_POSTURL); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_HTTPHEADER,$requestheader); # print('<br/>Sending header '.htmlspecialchars($header).'<hr/>'); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_DNS_USE_GLOBAL_CACHE, TRUE); curl_setopt($curl, CURLOPT_USERAGENT,NAME." (phpList version ".VERSION.", http://www.phplist.com/)"); curl_setopt($curl, CURLOPT_POST, 1); ## this generates multipart/form-data, and that crashes the API, so don't use # curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters); $data = ''; foreach ($requestdata as $param => $value) { $data .= $param.'='.urlencode($value).'&'; } $data = substr($data,0,-1); # print('Sending data '.htmlspecialchars($data).'<hr/>'); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $res = curl_exec($curl); $status = curl_getinfo($curl,CURLINFO_HTTP_CODE); # print('Curl status '.$status); if ($status != 200) { $error = curl_error($curl); logEvent('Amazon SES status '.$status.' '.strip_tags($res).' '.$error); } curl_close($curl); # print('Got remote admin response '.htmlspecialchars($res).'<br/>'); return $status == 200; } function MailSend($header, $body) { $this->mailsize = strlen($header.$body); ## use Amazon, if set up, @@TODO redo with latest PHPMailer ## https://github.com/PHPMailer/PHPMailer/commit/57b183bf6a203cb69231bc3a235a00905feff75b if (USE_AMAZONSES) { $header .= "To: ".$this->destinationemail.$this->LE; return $this->AmazonSESSend($header,$body); } ## we don't really use multiple to's so pass that on to phpmailer, if there are any if (!$this->SingleTo || !USE_LOCAL_SPOOL) { return parent::MailSend($header,$body); } if (!is_dir(USE_LOCAL_SPOOL) || !is_writable(USE_LOCAL_SPOOL)) { ## if local spool is not set, send the normal way return parent::MailSend($header,$body); } $fname = tempnam(USE_LOCAL_SPOOL,'msg'); file_put_contents($fname,$header."\n".$body); file_put_contents($fname.'.S',$this->Sender); return true; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
FCKeditor | Folder | 0755 |
|
|
PEAR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
PHPMailer6 | Folder | 0755 |
|
|
actions | Folder | 0755 |
|
|
auth | Folder | 0755 |
|
|
commonlib | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
data | Folder | 0755 |
|
|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
inc | Folder | 0755 |
|
|
info | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
lan | Folder | 0755 |
|
|
locale | Folder | 0755 |
|
|
oldmailer | Folder | 0755 |
|
|
onyxrss | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
styles | Folder | 0755 |
|
|
tests | Folder | 0755 |
|
|
ui | Folder | 0755 |
|
|
uploadimages | Folder | 0755 |
|
|
.gitignore | File | 20 B | 0644 |
|
.htaccess | File | 171 B | 0644 |
|
.minceconf | File | 994 B | 0644 |
|
AnalyticsQuery.php | File | 985 B | 0644 |
|
CsvReader.php | File | 1.27 KB | 0644 |
|
EmailSender.php | File | 477 B | 0644 |
|
about.php | File | 4.22 KB | 0644 |
|
accesscheck.php | File | 1.51 KB | 0644 |
|
addprefix.php | File | 966 B | 0644 |
|
adduser.php | File | 46 B | 0644 |
|
admin.php | File | 10.68 KB | 0644 |
|
adminattributes.php | File | 6.39 KB | 0644 |
|
admins.php | File | 4.54 KB | 0644 |
|
adodb.inc | File | 6.49 KB | 0644 |
|
analytics.php | File | 2.84 KB | 0644 |
|
attributes.php | File | 102 B | 0644 |
|
blacklistemail.php | File | 1.04 KB | 0644 |
|
bounce.php | File | 10.09 KB | 0644 |
|
bouncemgt.php | File | 1.39 KB | 0644 |
|
bouncerule.php | File | 3 KB | 0644 |
|
bouncerules.php | File | 5.86 KB | 0644 |
|
bounces.php | File | 6.01 KB | 0644 |
|
catlists.php | File | 2.64 KB | 0644 |
|
checkbouncerules.php | File | 1.34 KB | 0644 |
|
checki18n.php | File | 2.69 KB | 0644 |
|
checkprerequisites.php | File | 1.05 KB | 0644 |
|
class.html.mime.mail-outlookfix.inc | File | 19.93 KB | 0644 |
|
class.html.mime.mail.inc | File | 19.35 KB | 0644 |
|
class.image.inc | File | 5.77 KB | 0644 |
|
class.phplistmailer.php | File | 24.23 KB | 0644 |
|
class.phplistmailerbase.php | File | 1.5 KB | 0644 |
|
community.php | File | 1.78 KB | 0644 |
|
communityfeed.php | File | 2.36 KB | 0644 |
|
configure.php | File | 5.25 KB | 0644 |
|
connect.php | File | 74.36 KB | 0644 |
|
convertstats.php | File | 5.51 KB | 0644 |
|
converttoutf8.php | File | 3.77 KB | 0644 |
|
cron.php | File | 3.37 KB | 0644 |
|
date.php | File | 6.08 KB | 0644 |
|
dbcheck.php | File | 111 B | 0644 |
|
defaultFrontendTexts.php | File | 9.57 KB | 0644 |
|
defaultconfig.inc | File | 23.52 KB | 0644 |
|
defaultconfig.php | File | 24.92 KB | 0644 |
|
defaultplugin.php | File | 23.31 KB | 0644 |
|
defaults.php | File | 2.83 KB | 0644 |
|
defaultsystemtemplate.php | File | 1.83 KB | 0644 |
|
defaulttest.php | File | 1.12 KB | 0644 |
|
dlusers.php | File | 232 B | 0644 |
|
domainbounces.php | File | 507 B | 0644 |
|
domainstats.php | File | 2.83 KB | 0644 |
|
editattributes.php | File | 6.7 KB | 0644 |
|
editlist.php | File | 6.79 KB | 0644 |
|
error_log | File | 274 B | 0644 |
|
eventlog.php | File | 4.49 KB | 0644 |
|
export.php | File | 4.84 KB | 0644 |
|
exportuserdata.php | File | 6.36 KB | 0644 |
|
fckphplist.php | File | 43.21 KB | 0644 |
|
footer.inc | File | 1.19 KB | 0644 |
|
footer.old.inc | File | 1.82 KB | 0644 |
|
gchart.php | File | 869 B | 0644 |
|
generatebouncerules.php | File | 5.24 KB | 0644 |
|
getrss.php | File | 3.94 KB | 0644 |
|
header.inc | File | 1.75 KB | 0644 |
|
home.php | File | 16.36 KB | 0644 |
|
hostedprocessqueuesetup.php | File | 1.64 KB | 0644 |
|
htaccess | File | 311 B | 0644 |
|
image.php | File | 795 B | 0644 |
|
import.php | File | 2.54 KB | 0644 |
|
import1.php | File | 9.41 KB | 0644 |
|
import2.php | File | 243 B | 0644 |
|
import3.php | File | 20.26 KB | 0644 |
|
import4.php | File | 15.63 KB | 0644 |
|
importadmin.php | File | 14.5 KB | 0644 |
|
importlib.php | File | 2.86 KB | 0644 |
|
importsimple.php | File | 5.84 KB | 0644 |
|
index.php | File | 22.53 KB | 0644 |
|
index.php.old | File | 22.53 KB | 0644 |
|
info.php | File | 1.01 KB | 0644 |
|
init.php | File | 21.7 KB | 0644 |
|
initialise.php | File | 10.02 KB | 0644 |
|
initlanguages.php | File | 794 B | 0644 |
|
languages.php | File | 22.43 KB | 0644 |
|
lib.php | File | 59.85 KB | 0644 |
|
list.php | File | 11.79 KB | 0644 |
|
listbounces.php | File | 4.64 KB | 0644 |
|
login.php | File | 6.05 KB | 0755 |
|
logout.php | File | 224 B | 0644 |
|
massremove.php | File | 1.81 KB | 0644 |
|
massunconfirm.php | File | 1.52 KB | 0644 |
|
mclicks.php | File | 9.55 KB | 0644 |
|
members.php | File | 16.58 KB | 0644 |
|
mergeduplicates.php | File | 4.28 KB | 0644 |
|
message.php | File | 7.27 KB | 0644 |
|
messages.php | File | 18.94 KB | 0644 |
|
mimePart.php | File | 10.7 KB | 0644 |
|
minify.txt | File | 201 B | 0644 |
|
msgbounces.php | File | 3.79 KB | 0644 |
|
msgstatus.php | File | 1.18 KB | 0644 |
|
mviews.php | File | 7.88 KB | 0644 |
|
mysql.inc | File | 11.19 KB | 0644 |
|
mysqli.inc | File | 11.58 KB | 0644 |
|
pageaction.php | File | 1.08 KB | 0644 |
|
pagetop.php | File | 1.17 KB | 0644 |
|
phpListAdminAuthentication.php | File | 7.2 KB | 0644 |
|
pluginlib.php | File | 6.39 KB | 0644 |
|
plugins.php | File | 10.32 KB | 0644 |
|
preparesend.php | File | 627 B | 0644 |
|
processbounces.php | File | 29.71 KB | 0644 |
|
processqueue.php | File | 3.73 KB | 0644 |
|
purgerss.php | File | 1.38 KB | 0644 |
|
readtestmail.php | File | 11.26 KB | 0644 |
|
reconcileusers.php | File | 25.16 KB | 0644 |
|
redirecttoupdater.php | File | 170 B | 0644 |
|
reindex.php | File | 1.69 KB | 0644 |
|
rsslib.php | File | 2.8 KB | 0644 |
|
runcommand.php | File | 583 B | 0644 |
|
send.php | File | 5.58 KB | 0644 |
|
send_core.php | File | 56.08 KB | 0644 |
|
sendemaillib.php | File | 64.2 KB | 0644 |
|
sendprepared.php | File | 4.33 KB | 0644 |
|
sessionlib.php | File | 2.92 KB | 0644 |
|
setpermissions.php | File | 1.57 KB | 0644 |
|
setup.php | File | 3.21 KB | 0644 |
|
sidebar.php | File | 2.67 KB | 0644 |
|
spage.php | File | 3.29 KB | 0644 |
|
spageedit.php | File | 17.07 KB | 0644 |
|
statsmgt.php | File | 1.22 KB | 0644 |
|
statsoverview.php | File | 7.62 KB | 0644 |
|
stresstest.php | File | 5.1 KB | 0644 |
|
structure.php | File | 26.79 KB | 0644 |
|
subscribelib2.php | File | 66.02 KB | 0644 |
|
subscriberstats.php | File | 591 B | 0644 |
|
suppressionlist.php | File | 1.71 KB | 0644 |
|
system.php | File | 784 B | 0644 |
|
systemstats.php | File | 7.71 KB | 0644 |
|
template.php | File | 12.72 KB | 0644 |
|
templates.php | File | 3.02 KB | 0644 |
|
tests.php | File | 1.57 KB | 0644 |
|
uclicks.php | File | 6.52 KB | 0644 |
|
update.php | File | 187 B | 0644 |
|
updateLib.php | File | 2.77 KB | 0644 |
|
updatetlds.php | File | 399 B | 0644 |
|
updatetranslation.php | File | 1.94 KB | 0644 |
|
upgrade.php | File | 29.03 KB | 0644 |
|
user.php | File | 2.35 KB | 0644 |
|
usercheck.php | File | 2.27 KB | 0644 |
|
userclicks.php | File | 8 KB | 0644 |
|
userhistory.php | File | 127 B | 0644 |
|
usermgt.php | File | 1.83 KB | 0644 |
|
users.php | File | 393 B | 0644 |
|
vCard.php | File | 1.9 KB | 0644 |
|
viewmessage.php | File | 610 B | 0644 |
|
viewrss.php | File | 4.07 KB | 0644 |
|
viewtemplate.php | File | 1.82 KB | 0644 |
|
vote.php | File | 38 B | 0644 |
|