Jump to content

Rachel W

Members
  • Posts

    16
  • Joined

  • Last visited

    Never

Profile Information

  • Gender
    Not Telling

Rachel W's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Okay, so I went through the database again and noticed the words tools/newsletter and realised that this was asked when I set it up. I thought that it was default path that the data would be stored in or something because of the way it was worded, but then I realised that it may be asking for the path, so i changed it to pmnl and I resent a subscription newsletter. It now gave a link with /pmnlsubscription.php so then I changed it to pmnl/ and now the link shows pmnl/subscription.php (so there was never a newslettersubscription.php, it was just lacking the / in between and was in fact the wrong path, a path that did not exist. i feel so stupid, btu i went into this blindly and did not understand what it was asking. It works now. Thank you for all your work in trying to figure this out with me. I still have not figured out how to put the form into another page or get rid of browse archives, but I am quite happy with the way it is and am not going to worry about it. Thank you again Ken. Very much appreciated. If you ever need a site logo made or anything let me know...
  2. Don't be sorry at all. You have been so helpful. The email looks as follows: "To unsubscribe click on the following link: http://investors.whiteknightps.com/tools/newslettersubscription.php?op=confirm_leave&email_addr=ellcrystree%40yahoo.com&hash=a60d2c1b8de3ec92d34b06bbb79ec69a&list_id=1" That is it! There is an optional message that I have added above giving the correct link, but I don't know where to get rid of the line above (I can add the message in a box in the admin, but nowhere does the above line appear to edit). When I make the option where people have to confirm the email has the line "please confirm using the link below" but I believe it to be the same link.
  3. Yep, I looked through the database in my SQL manager, but could not find anything that looked promising. I looked this morning but will look again later.
  4. I looked through all the files that I could see and did not find anything, but will spend some time later looking again. I will let you know what I find. Thank you so much for all the time that you are spending looking at this. Rachel
  5. Should the $conf[#] be clarified somewhere, and if so , could these be changed perhaps?
  6. libnewsletter.php <? //16/05/2002 <gregory.kokanosky@free.fr> // phpMyNewsletter v0.8.x // a class for managing Newsletter if (!defined( "_NEWSLETTER_LIB" )) { define("_NEWSLETTER_LIB", 1); function validEmailAddress($email){ // regx to test for valid e-mail adres $regex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$'; if (eregi($regex, $email)) return true; else return false; } class Newsletter { var $list_id; var $name; //name of the newsletter var $from; var $from_name; var $subscription_subject; var $subscription_body; var $welcome_subject; var $welcome_body; var $quit_subject; var $quit_body; var $subject; var $header; var $footer; var $db_host; var $db_login; var $db_pass; var $db_name; function getConfig($host, $login, $pass, $database, $list_id , $list_table){ $this->list_id = $list_id; $db= new Db(); $db->DbConnect($host, $login, $pass, $database); $db->DbQuery("SELECT * FROM $list_table WHERE list_id='$list_id'"); $conf = $db->DbNextRow(); $this->db_host =$host; $this->db_login=$login; $this->db_pass =$pass; $this->db_name =$database; $this->name= $conf[1]; $this->from= $conf[2]; $this->from_name = $conf[3]; $this->subject= $conf[4]; $this->header = $conf[5]; $this->footer = $conf[6]; $this->subscription_subject = $conf[7]; $this->subscription_body = $conf[8]; $this->welcome_subject = $conf[9]; $this->welcome_body = $conf[10]; $this->quit_subject = $conf[11]; $this->quit_body = $conf[12]; } function getAddress($mail_table, $begin='', $limit='') { $Addr = array(); $db= new Db(); $db->DbConnect($this->db_host, $this->db_login, $this->db_pass, $this->db_name); $sql = "SELECT email FROM $mail_table WHERE list_id='$this->list_id'"; $db->DbQuery($sql ,$begin, $limit, 1); for($i=0; $i<$db->DbNumRows(); $i++){ $addr = $db->DbNextRow(); $Addr[$i]=$addr[0]; } return $Addr; } function saveConfig($db_host, $db_login, $db_pass, $db_name, $list_id, $table_listsconfig, $newsletter_name, $from, $from_name, $subject, $header, $footer, $subscription_subject, $subscription_body, $welcome_subject, $welcome_body, $quit_subject, $quit_body){ $db= new Db(); $db->DbConnect($db_host, $db_login, $db_pass, $db_name); if(!get_magic_quotes_gpc()){ $newsletter_name = escape_string($newsletter_name); $from = escape_string($from); $from_name = escape_string($from_name); $subject = escape_string($subject); $header = escape_string($header); $footer = escape_string($footer); $subscription_subject = escape_string($subscription_subject); $subscription_body = escape_string($subscription_body); $welcome_subject = escape_string($welcome_subject); $welcome_body = escape_string($welcome_body); $quit_subject = escape_string($quit_subject); $quit_body =escape_string($quit_body); } $sql ="UPDATE $table_listsconfig SET newsletter_name=\"$newsletter_name\", from_addr=\"$from\", from_name=\"$from_name\", subject=\"$subject\", header=\"$header\" , footer=\"$footer\" , subscription_subject=\"$subscription_subject\", subscription_body=\"$subscription_body\", welcome_subject=\"$welcome_subject\", welcome_body=\"$welcome_body\", quit_subject=\"$quit_subject\", quit_body=\"$quit_body\" WHERE list_id='$list_id'"; $db->DbQuery($sql); if($db->DbError()) return 0; else return 1; } function getSubscribersNumbers($table_email){ $db= new Db(); $db->DbConnect($this->db_host, $this->db_login, $this->db_pass, $this->db_name); $db->DbQuery("SELECT COUNT(*) FROM $table_email WHERE list_id='$this->list_id'"); $num = $db->DbNextRow(); return $num[0]; } function deleteArchive($table_archives, $msg_id){ $db= new Db(); $db->DbConnect($this->db_host, $this->db_login, $this->db_pass, $this->db_name); $db->DbQuery("DELETE FROM $table_archives WHERE id='$msg_id'"); if($db->DbError()) return 0; else return 1; } function getArchivesSelectList($table_archives, $msg_id='', $form_name='archive_form2'){ $db= new Db(); $db->DbConnect($this->db_host, $this->db_login, $this->db_pass, $this->db_name); $sql = "SELECT id, date, subject FROM $table_archives WHERE list_id='$this->list_id' ORDER BY date DESC"; $db->DbQuery($sql); if($db->DbNumRows() == 0) return -1; else { echo "<select name=\"msg_id\" onchange=\"document.$form_name.submit()\">\n"; while($archives = $db->DBNextRow()) { echo "<option value=\"$archives[0]\" "; if ($msg_id==$archives[0]) echo "selected='selected'"; echo ">".stripslashes(htmlspecialchars($archives[2]))." </option>\n"; } echo "</select>"; } } function getArchiveMsg($table_archives, $msg_id) { if( empty($offset)) $offset=0; $db= new Db(); $db->DbConnect($this->db_host, $this->db_login, $this->db_pass, $this->db_name); $sql = "SELECT date, type, subject, message FROM $table_archives WHERE id='$msg_id'"; $db->DbQuery($sql); if($db->DbNumRows() == 0) return -1; else{ $archive = $db->DbNextRow(); echo "<div class='subsection' >"; $subject = htmlspecialchars($archive[2]); $subject = stripslashes($subject); $date = $archive[0]; echo "<div class='archivetitle'>".$subject." - ".$date."</div>"; //echo translate("ARCHIVE_SUBJECT").": ".$subject."<br />\n"; //echo translate("ARCHIVE_DATE").": ".$archive[0]."<br />\n"; //echo translate("ARCHIVE_FORMAT").": ".$archive[1]."<br /><br />\n"; echo "<div class='subcontent'>"; if($archive[1] != "html"){ $body = str_replace("<","<", $archive[3]); $body = str_replace(">",">", $body); $body = nl2br(stripslashes($body)); } else { $body = stripslashes( $archive[3] ); } echo "\t".$body; echo "</div></div>\n"; echo "<br />"; } } } } ?>
  7. It was really long so here is the second half of the code: /** * 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); $message = ""; for ($i=0 ;$i < count($line); $i++) { $line_part = explode(" ", $line[$i]); $buf = ""; for ($e = 0; $e<count($line_part); $e++) { $word = $line_part[$e]; if ($qp_mode and (strlen($word) > $length)) { $space_left = $length - strlen($buf) - 1; if ($e != 0) { if ($space_left > 20) { $len = $space_left; if (substr($word, $len - 1, 1) == "=") $len--; elseif (substr($word, $len - 2, 1) == "=") $len -= 2; $part = substr($word, 0, $len); $word = substr($word, $len); $buf .= " " . $part; $message .= $buf . sprintf("=%s", $this->LE); } else { $message .= $buf . $soft_break; } $buf = ""; } while (strlen($word) > 0) { $len = $length; if (substr($word, $len - 1, 1) == "=") $len--; elseif (substr($word, $len - 2, 1) == "=") $len -= 2; $part = substr($word, 0, $len); $word = substr($word, $len); if (strlen($word) > 0) $message .= $part . sprintf("=%s", $this->LE); else $buf = $part; } } else { $buf_o = $buf; $buf .= ($e == 0) ? $word : (" " . $word); if (strlen($buf) > $length and $buf_o != "") { $message .= $buf_o . $soft_break; $buf = $word; } } } $message .= $buf . $this->LE; } return $message; } /** * Set the body wrapping. * @access private * @return void */ function SetWordWrap() { if($this->WordWrap < 1) return; switch($this->message_type) { case "alt": // fall through case "alt_attachment": $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap); break; default: $this->Body = $this->WrapText($this->Body, $this->WordWrap); break; } } /** * Assembles message header. * @access private * @return string */ function CreateHeader() { $result = ""; // Set the boundaries $uniq_id = md5(uniqid(time())); $this->boundary[1] = "b1_" . $uniq_id; $this->boundary[2] = "b2_" . $uniq_id; $result .= $this->HeaderLine("Date", $this->RFCDate()); if($this->Sender == "") $result .= $this->HeaderLine("Return-Path", trim($this->From)); else $result .= $this->HeaderLine("Return-Path", trim($this->Sender)); // To be created automatically by mail() if($this->Mailer != "mail") { if(count($this->to) > 0) $result .= $this->AddrAppend("To", $this->to); else if (count($this->cc) == 0) $result .= $this->HeaderLine("To", "undisclosed-recipients:;"); if(count($this->cc) > 0) $result .= $this->AddrAppend("Cc", $this->cc); } $from = array(); $from[0][0] = trim($this->From); $from[0][1] = $this->FromName; $result .= $this->AddrAppend("From", $from); // sendmail and mail() extract Bcc from the header before sending if((($this->Mailer == "sendmail") || ($this->Mailer == "mail")) && (count($this->bcc) > 0)) $result .= $this->AddrAppend("Bcc", $this->bcc); if(count($this->ReplyTo) > 0) $result .= $this->AddrAppend("Reply-to", $this->ReplyTo); // mail() sets the subject itself if($this->Mailer != "mail") $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject))); $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE); $result .= $this->HeaderLine("X-Priority", $this->Priority); $result .= $this->HeaderLine("X-Mailer", "PHPMailer [version " . $this->Version . "]"); if($this->ConfirmReadingTo != "") { $result .= $this->HeaderLine("Disposition-Notification-To", "<" . trim($this->ConfirmReadingTo) . ">"); } // Add custom headers for($index = 0; $index < count($this->CustomHeader); $index++) { $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1]))); } $result .= $this->HeaderLine("MIME-Version", "1.0"); switch($this->message_type) { case "plain": $result .= $this->HeaderLine("Content-Transfer-Encoding", $this->Encoding); $result .= sprintf("Content-Type: %s; charset=\"%s\"", $this->ContentType, $this->CharSet); break; case "attachments": // fall through case "alt_attachments": if($this->InlineImageExists()) { $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", "multipart/related", $this->LE, $this->LE, $this->boundary[1], $this->LE); } else { $result .= $this->HeaderLine("Content-Type", "multipart/mixed;"); $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); } break; case "alt": $result .= $this->HeaderLine("Content-Type", "multipart/alternative;"); $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); break; } if($this->Mailer != "mail") $result .= $this->LE.$this->LE; return $result; } /** * Assembles the message body. Returns an empty string on failure. * @access private * @return string */ function CreateBody() { $result = ""; $this->SetWordWrap(); switch($this->message_type) { case "alt": $result .= $this->GetBoundary($this->boundary[1], "", "text/plain", ""); $result .= $this->EncodeString($this->AltBody, $this->Encoding); $result .= $this->LE.$this->LE; $result .= $this->GetBoundary($this->boundary[1], "", "text/html", ""); $result .= $this->EncodeString($this->Body, $this->Encoding); $result .= $this->LE.$this->LE; $result .= $this->EndBoundary($this->boundary[1]); break; case "plain": $result .= $this->EncodeString($this->Body, $this->Encoding); break; case "attachments": $result .= $this->GetBoundary($this->boundary[1], "", "", ""); $result .= $this->EncodeString($this->Body, $this->Encoding); $result .= $this->LE; $result .= $this->AttachAll(); break; case "alt_attachments": $result .= sprintf("--%s%s", $this->boundary[1], $this->LE); $result .= sprintf("Content-Type: %s;%s" . "\tboundary=\"%s\"%s", "multipart/alternative", $this->LE, $this->boundary[2], $this->LE.$this->LE); // Create text body $result .= $this->GetBoundary($this->boundary[2], "", "text/plain", "") . $this->LE; $result .= $this->EncodeString($this->AltBody, $this->Encoding); $result .= $this->LE.$this->LE; // Create the HTML body $result .= $this->GetBoundary($this->boundary[2], "", "text/html", "") . $this->LE; $result .= $this->EncodeString($this->Body, $this->Encoding); $result .= $this->LE.$this->LE; $result .= $this->EndBoundary($this->boundary[2]); $result .= $this->AttachAll(); break; } if($this->IsError()) $result = ""; return $result; } /** * Returns the start of a message boundary. * @access private */ function GetBoundary($boundary, $charSet, $contentType, $encoding) { $result = ""; if($charSet == "") { $charSet = $this->CharSet; } if($contentType == "") { $contentType = $this->ContentType; } if($encoding == "") { $encoding = $this->Encoding; } $result .= $this->TextLine("--" . $boundary); $result .= sprintf("Content-Type: %s; charset = \"%s\"", $contentType, $charSet); $result .= $this->LE; $result .= $this->HeaderLine("Content-Transfer-Encoding", $encoding); $result .= $this->LE; return $result; } /** * Returns the end of a message boundary. * @access private */ function EndBoundary($boundary) { return $this->LE . "--" . $boundary . "--" . $this->LE; } /** * Sets the message type. * @access private * @return void */ function SetMessageType() { if(count($this->attachment) < 1 && strlen($this->AltBody) < 1) $this->message_type = "plain"; else { if(count($this->attachment) > 0) $this->message_type = "attachments"; if(strlen($this->AltBody) > 0 && count($this->attachment) < 1) $this->message_type = "alt"; if(strlen($this->AltBody) > 0 && count($this->attachment) > 0) $this->message_type = "alt_attachments"; } } /** * Returns a formatted header line. * @access private * @return string */ function HeaderLine($name, $value) { return $name . ": " . $value . $this->LE; } /** * Returns a formatted mail line. * @access private * @return string */ function TextLine($value) { return $value . $this->LE; } /** * Adds an attachment from a path on the filesystem. * Returns false if the file could not be found * or accessed. * @param string $path Path to the attachment. * @param string $name Overrides the attachment name. * @param string $encoding File encoding (see $Encoding). * @param string $type File extension (MIME) type. * @return bool */ function AddAttachment($path, $name = "", $encoding = "base64", $type = "application/octet-stream") { if(!@is_file($path)) { $this->SetError($this->Lang("file_access") . $path); return false; } $filename = basename($path); if($name == "") $name = $filename; $cur = count($this->attachment); $this->attachment[$cur][0] = $path; $this->attachment[$cur][1] = $filename; $this->attachment[$cur][2] = $name; $this->attachment[$cur][3] = $encoding; $this->attachment[$cur][4] = $type; $this->attachment[$cur][5] = false; // isStringAttachment $this->attachment[$cur][6] = "attachment"; $this->attachment[$cur][7] = 0; return true; } /** * Attaches all fs, string, and binary attachments to the message. * Returns an empty string on failure. * @access private * @return string */ function AttachAll() { // Return text of body $mime = array(); // Add all attachments for($i = 0; $i < count($this->attachment); $i++) { // Check for string attachment $bString = $this->attachment[$i][5]; if ($bString) $string = $this->attachment[$i][0]; else $path = $this->attachment[$i][0]; $filename = $this->attachment[$i][1]; $name = $this->attachment[$i][2]; $encoding = $this->attachment[$i][3]; $type = $this->attachment[$i][4]; $disposition = $this->attachment[$i][6]; $cid = $this->attachment[$i][7]; $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE); $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $name, $this->LE); $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE); if($disposition == "inline") $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE); $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $name, $this->LE.$this->LE); // Encode as string attachment if($bString) { $mime[] = $this->EncodeString($string, $encoding); if($this->IsError()) { return ""; } $mime[] = $this->LE.$this->LE; } else { $mime[] = $this->EncodeFile($path, $encoding); if($this->IsError()) { return ""; } $mime[] = $this->LE.$this->LE; } } $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE); return join("", $mime); } /** * Encodes attachment in requested format. Returns an * empty string on failure. * @access private * @return string */ function EncodeFile ($path, $encoding = "base64") { if(!@$fd = fopen($path, "rb")) { $this->SetError($this->Lang("file_open") . $path); return ""; } $file_buffer = fread($fd, filesize($path)); $file_buffer = $this->EncodeString($file_buffer, $encoding); fclose($fd); return $file_buffer; } /** * Encodes string to requested format. Returns an * empty string on failure. * @access private * @return string */ function EncodeString ($str, $encoding = "base64") { $encoded = ""; switch(strtolower($encoding)) { case "base64": // chunk_split is found in PHP >= 3.0.6 $encoded = chunk_split(base64_encode($str), 76, $this->LE); break; case "7bit": case "8bit": $encoded = $this->FixEOL($str); if (substr($encoded, -(strlen($this->LE))) != $this->LE) $encoded .= $this->LE; break; case "binary": $encoded = $str; break; case "quoted-printable": $encoded = $this->EncodeQP($str); break; default: $this->SetError($this->Lang("encoding") . $encoding); break; } return $encoded; } /** * Encode a header string to best of Q, B, quoted or none. * @access private * @return string */ function EncodeHeader ($str, $position = 'text') { $x = 0; switch (strtolower($position)) { case 'phrase': if (!preg_match('/[\200-\377]/', $str)) { // Can't use addslashes as we don't know what value has magic_quotes_sybase. $encoded = addcslashes($str, "\0..\37\177\\\""); if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) return ($encoded); else return ("\"$encoded\""); } $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); break; case 'comment': $x = preg_match_all('/[()"]/', $str, $matches); // Fall-through case 'text': default: $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); break; } if ($x == 0) return ($str); $maxlen = 75 - 7 - strlen($this->CharSet); // Try to select the encoding which should produce the shortest output if (strlen($str)/3 < $x) { $encoding = 'B'; $encoded = base64_encode($str); $maxlen -= $maxlen % 4; $encoded = trim(chunk_split($encoded, $maxlen, "\n")); } else { $encoding = 'Q'; $encoded = $this->EncodeQ($str, $position); $encoded = $this->WrapText($encoded, $maxlen, true); $encoded = str_replace("=".$this->LE, "\n", trim($encoded)); } $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded); $encoded = trim(str_replace("\n", $this->LE, $encoded)); return $encoded; } /** * Encode string to quoted-printable. * @access private * @return string */ function EncodeQP ($str) { $encoded = $this->FixEOL($str); if (substr($encoded, -(strlen($this->LE))) != $this->LE) $encoded .= $this->LE; // Replace every high ascii, control and = characters $encoded = preg_replace('/([\000-\010\013\014\016-\037\075\177-\377])/e', "'='.sprintf('%02X', ord('\\1'))", $encoded); // Replace every spaces and tabs when it's the last character on a line $encoded = preg_replace("/([\011\040])".$this->LE."/e", "'='.sprintf('%02X', ord('\\1')).'".$this->LE."'", $encoded); // Maximum line length of 76 characters before CRLF (74 + space + '=') $encoded = $this->WrapText($encoded, 74, true); return $encoded; } /** * Encode string to q encoding. * @access private * @return string */ function EncodeQ ($str, $position = "text") { // There should not be any EOL in the string $encoded = preg_replace("[\r\n]", "", $str); switch (strtolower($position)) { case "phrase": $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded); break; case "comment": $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded); case "text": default: // Replace every high ascii, control =, ? and _ characters $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e', "'='.sprintf('%02X', ord('\\1'))", $encoded); break; } // Replace every spaces to _ (more readable than =20) $encoded = str_replace(" ", "_", $encoded); return $encoded; } /** * Adds a string or binary attachment (non-filesystem) to the list. * This method can be used to attach ascii or binary data, * such as a BLOB record from a database. * @param string $string String attachment data. * @param string $filename Name of the attachment. * @param string $encoding File encoding (see $Encoding). * @param string $type File extension (MIME) type. * @return void */ function AddStringAttachment($string, $filename, $encoding = "base64", $type = "application/octet-stream") { // Append to $attachment array $cur = count($this->attachment); $this->attachment[$cur][0] = $string; $this->attachment[$cur][1] = $filename; $this->attachment[$cur][2] = $filename; $this->attachment[$cur][3] = $encoding; $this->attachment[$cur][4] = $type; $this->attachment[$cur][5] = true; // isString $this->attachment[$cur][6] = "attachment"; $this->attachment[$cur][7] = 0; } /** * Adds an embedded attachment. This can include images, sounds, and * just about any other document. Make sure to set the $type to an * image type. For JPEG images use "image/jpeg" and for GIF images * use "image/gif". * @param string $path Path to the attachment. * @param string $cid Content ID of the attachment. Use this to identify * the Id for accessing the image in an HTML form. * @param string $name Overrides the attachment name. * @param string $encoding File encoding (see $Encoding). * @param string $type File extension (MIME) type. * @return bool */ function AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64", $type = "application/octet-stream") { if(!@is_file($path)) { $this->SetError($this->Lang("file_access") . $path); return false; } $filename = basename($path); if($name == "") $name = $filename; // Append to $attachment array $cur = count($this->attachment); $this->attachment[$cur][0] = $path; $this->attachment[$cur][1] = $filename; $this->attachment[$cur][2] = $name; $this->attachment[$cur][3] = $encoding; $this->attachment[$cur][4] = $type; $this->attachment[$cur][5] = false; // isStringAttachment $this->attachment[$cur][6] = "inline"; $this->attachment[$cur][7] = $cid; return true; } /** * Returns true if an inline attachment is present. * @access private * @return bool */ function InlineImageExists() { $result = false; for($i = 0; $i < count($this->attachment); $i++) { if($this->attachment[$i][6] == "inline") { $result = true; break; } } return $result; } ///////////////////////////////////////////////// // MESSAGE RESET METHODS ///////////////////////////////////////////////// /** * Clears all recipients assigned in the TO array. Returns void. * @return void */ function ClearAddresses() { $this->to = array(); } /** * Clears all recipients assigned in the CC array. Returns void. * @return void */ function ClearCCs() { $this->cc = array(); } /** * Clears all recipients assigned in the BCC array. Returns void. * @return void */ function ClearBCCs() { $this->bcc = array(); } /** * Clears all recipients assigned in the ReplyTo array. Returns void. * @return void */ function ClearReplyTos() { $this->ReplyTo = array(); } /** * Clears all recipients assigned in the TO, CC and BCC * array. Returns void. * @return void */ function ClearAllRecipients() { $this->to = array(); $this->cc = array(); $this->bcc = array(); } /** * Clears all previously set filesystem, string, and binary * attachments. Returns void. * @return void */ function ClearAttachments() { $this->attachment = array(); } /** * Clears all custom headers. Returns void. * @return void */ function ClearCustomHeaders() { $this->CustomHeader = array(); } // // MISCELLANEOUS METHODS /// /** * Adds the error message to the error container. * Returns void. * @access private * @return void */ function SetError($msg) { $this->error_count++; $this->ErrorInfo = $msg; } /** * Returns the proper RFC 822 formatted date. * @access private * @return string */ function RFCDate() { $tz = date("Z"); $tzs = ($tz < 0) ? "-" : "+"; $tz = abs($tz); $tz = ($tz/3600)*100 + ($tz%3600)/60; $result = sprintf("%s %s%04d", date("D, j M Y H:i:s"), $tzs, $tz); return $result; } /** * Returns the appropriate server variable. Should work with both * PHP 4.1.0+ as well as older versions. Returns an empty string * if nothing is found. * @access private * @return mixed */ function ServerVar($varName) { global $HTTP_SERVER_VARS; global $HTTP_ENV_VARS; if(!isset($_SERVER)) { $_SERVER = $HTTP_SERVER_VARS; if(!isset($_SERVER["REMOTE_ADDR"])) $_SERVER = $HTTP_ENV_VARS; // must be Apache } if(isset($_SERVER[$varName])) return $_SERVER[$varName]; else return ""; } /** * Returns the server hostname or 'localhost.localdomain' if unknown. * @access private * @return string */ function ServerHostname() { if ($this->Hostname != "") $result = $this->Hostname; elseif ($this->ServerVar('SERVER_NAME') != "") $result = $this->ServerVar('SERVER_NAME'); else $result = "localhost.localdomain"; return $result; } /** * Returns a message in the appropriate language. * @access private * @return string */ function Lang($key) { if(count($this->language) < 1) $this->SetLanguage("en"); // set the default language if(isset($this->language[$key])) return $this->language[$key]; else return "Language string failed to load: " . $key; } /** * Returns true if an error occurred. * @return bool */ function IsError() { return ($this->error_count > 0); } /** * Changes every end of line from CR or LF to CRLF. * @access private * @return string */ function FixEOL($str) { $str = str_replace("\r\n", "\n", $str); $str = str_replace("\r", "\n", $str); $str = str_replace("\n", $this->LE, $str); return $str; } /** * Adds a custom header. * @return void */ function AddCustomHeader($custom_header) { $this->CustomHeader[] = explode(":", $custom_header, 2); } } ?>
  8. here is the code for the class.phpmailer.php <?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 * * Support for online.net by G. Kokanosky (c) 2005 * */ 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", or even "online"). * @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"; /**#@-*/ // 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 PHP email() online.net * specific function. * Returns void. * @access public * @return void */ function IsOnlineEmail() { $this->Mailer = "online"; } /** * 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(); 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; case "online": $result = $this->EmailSend($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 using the online.net specific email() function. * @access private * @return bool */ function EmailSend($header, $body) { $to = ""; for($i = 0; $i < count($this->to); $i++) { if($i != 0) { $to .= ", "; } $to .= $this->to[$i][0]; } list($from, $foo) = split("@", $this->From); $replyTo = $from; //Online.net seems to want only this part of mail header ... $header = "Content-Type:".$this->ContentType.";charset=".$this->CharSet."\n"; $header .= "Content-Transfer-Encoding: ".$this->Encoding."\n"; $header .= "Return-path: ".$this->From."\n"; 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 = @email($from, $to, $this->EncodeHeader($this->Subject), $body, $replyTo, $header, $params); } else $rt = @email($from, $to, $this->EncodeHeader($this->Subject), $body, $replyTo, $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 . "class.smtp.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. Returns false * if it cannot load the language file. The default language type * is English. * @param string $lang_type Type of language (e.g. Portuguese: "br") * @param string $lang_path Path to the language file directory * @access public * @return bool */ function SetLanguage($lang_type, $lang_path = "language/") { if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) include($lang_path.'phpmailer.lang-'.$lang_type.'.php'); else if(file_exists($lang_path.'phpmailer.lang-en.php')) include($lang_path.'phpmailer.lang-en.php'); else { $this->SetError("Could not load language file"); return false; } $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; } I feel like I am going in circles. There are a few files that give an unsubscribe line, or confirm your subscription, but none of them show a link to phpmynewletter.php; they give a link to subscription.php
  9. I did not look for the file as I know it does not exist but I looked in every file I could think of that could possibly do that and then within it I looked for the line that had the words newslettersubscription.php in it so that I could change the line to subscription.php but so far I have not been able to find anything that mentions it.
  10. I cannot find where to find it. I looked in all the files for the newslettersubscription.php to change it and even went into the database itself, but could not find it. Does anyone have any ideas from looking at the codes where I should look? Thanks Rachel
  11. There is none that I can see and there is no tools file either! I have tried the subscription.php and it seems to work fine right now, so unless I want people to confirm their subscription via email it should work fine. I do have one more question though. The subscription.php that I posted above is how it appears if I look at the file in a notepad format, however if I open the page and then right click I get a different page source as follows: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="phpmynewsletter.css" type="text/css" /> <title>phpMyNewsletter</title> </head> <body> <script language="JavaScript1.2" type="text/javascript"> function submitform() { if (document.sub_form.email_addr.value=='') alert("This email address is not valid"); else { if ( ((document.sub_form.email_addr.value.indexOf('@',1))==-1)||(document.sub_form.email_addr.value.indexOf('.',1))==-1 ) alert("This email address is not valid"); else { window.open("", "formPopup", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,height=200,width=500,toolbar=no", true); document.sub_form.target='formPopup'; document.sub_form.submit(); } } } </script><br /> <div class='content'><form action="subscription.php" method="post" name="sub_form" target="formPopup" onsubmit="submitform();false;"> <input type="text" size="15" name="email_addr" value="Email address" onfocus="if (this.value=='Email address') this.value=''" /> <input type="button" name="sub" value=" O K " onclick="submitform()" /><br /> <input type="radio" class='radio' name="op" value="join_direct" checked="checked" /> Subscribe <input type="radio" class='radio' name="op" value="leave_direct" /> Unsubscribe<input type='hidden' name='list_id' value='1'><input type='hidden' name='popup' value="_popup"> </form> <div align="center"><a href="archives.php">Browse archives</a></div></div><br /><div align='center'><a href='http://gregory.kokanosky.free.fr/phpmynewsletter/' target='_blank'><img src='img/button_pmnl.png' alt='logo pmnl' title='powered by phpMyNewsletter' border='0' /></a></div></body></html> This clearly shows an item that I would prefer not to have on the page which is the line <div align="center"><a href="archives.php">Browse archives</a></div> (near the bottom) The reason I don't want to see this is because it actually allows people to look at all the old newsletters which I don't necessarily want. If I open the file to change it it shows the first code, not the one above, and the old one doesn't have such a line. Sorry that I am going off on a tangent but if this can be solved as well then that would be great. I have also found that even if I don't have to have a subscription confirmed an email is still sent out with an unsubscribe link as mentioned earlier in it that links to an invalid page and does not unsubscribe the user. I cannot find anywhere that I can change this in the admin area. Sorry that I have added another issue. Thanks Rachel
  12. Actually, I did not think of looking at the uploaded files from the browser (I just looked at the ones I had on my hard drive) and so when I opened that link it created a form that you can put in an email and then subscribe or unsubscribe, which is great. However, I now have another issue. When I typed my email, which I had already added to the mailing list and tried to subscribe, it told me I was already subscribed, which is great as it means that the form is linking to the database. However, the other issue is that when I unsubscribed, it told me that I had received an email to click on, which is fine, but then when I clicked in the email to confirm this, it opened a page that it could not find. If someone could help me with the lines that need to be adjusted in the form.php then may be this would help make everything work okay. Thanks so much. Rachel
  13. Can any body help with this... please... :'(
  14. I don't know. That is why I need the help. Basically I need a sign-up form for the website that will add the subscribers to the phpmynewsletter and they don't really explain how. They just tell you how to upload and install the program, which I have. I can access it and see current subscribers. I can manually add people but the whole idea is that people can sign-up using a form, which I assume is the form.php but I don't know how to format it in the way they ask. maybe if someone could tell me how to add the info in the form.php I can try putting that into a web page and see how it looks, but I need to know what path to type in there and where I would put the meta tag and also where I would put the path that they mention in the file. Thanks so much.
  15. Sure, I did not know to do that. Sorry. <?php // you can include this form in any page of // your website as follow: // // in this file, provide correct values for: // $path_to_pmnl // $list_id newsletter id // then in your page (need to be a php page) // add this line : // include("path/to/this/page/form.php"); // NOTA: your page need to use UTF8 encoding // put // <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> // in your html header //path to phpMyNewsletter base directory $path_to_pmnl="./"; // newsletter id, leave this empty if you want to list available // newsletter. //$list_id = 1; $list_id = ""; //display archive link (true or false) ? $display_archive=true; ////////////////////// DO NOT MODIFY ///////////////////// if(file_exists("./".$path_to_pmnl."include/config.php")){ include("./".$path_to_pmnl."include/config.php"); include("./".$path_to_pmnl."include/db/db_".$db_type.".inc.php"); } include("./".$path_to_pmnl."include/lib/libconfig.php"); include("./".$path_to_pmnl."include/interface.php"); include("./".$path_to_pmnl."include/lib/libnewsletter.php"); include("./".$path_to_pmnl."admin/include/function.php"); if(file_exists("./".$path_to_pmnl."include/config.php")){ print newsletter_list($list_id, true, $display_archive); } else { include "./".$path_to_pmnl."include/lang/english.php"; echo error_msg(translate("NEWSLETTER_NOT_YET")); } ?> Now the subscription script - it is very long, sorry, one of the reasons why I did not paste it originally. <? include("include/config.php"); include("include/lib/libconfig.php"); include("include/db/db_".$db_type.".inc.php"); include("include/interface.php"); include("include/lib/libnewsletter.php"); include("admin/include/function.php"); include("include/lib/class.phpmailer.php"); //dirty hack if (!function_exists('iconv') && function_exists('libiconv')) { function iconv($input_encoding, $output_encoding, $string) { return libiconv($input_encoding, $output_encoding, $string); } } if(!function_exists('iconv') && !function_exists('libiconv')) { include_once("./include/lib/ConvertCharset.class.php"); function iconv($input_encoding, $output_encoding, $string) { $converter = new ConvertCharset(); return $converter->Convert($string, $input_encoding, $output_encoding); } } $conf = new config(); $conf->getConfig($hostname,$login ,$pass,$database, $table_global_config); include("include/lang/".$conf->language.".php"); $list_id = (!empty($_POST['list_id']) ? $_POST['list_id'] : ""); $list_id = (empty($list_id) && !empty($_GET['list_id']) ? $_GET['list_id'] : $list_id); $email_addr = (!empty($_POST['email_addr']) ? $_POST['email_addr'] : ""); $email_addr = (empty($email_addr) && !empty( $_GET['email_addr']) ? $_GET['email_addr'] : $email_addr); $op = (!empty($_POST['op']) ? $_POST['op'] : ""); $op = (empty($op) && !empty( $_GET['op']) ? $_GET['op'] : $op); $hash = (!empty($_POST['hash']) ? $_POST['hash'] : ""); $hash = (empty($hash) && !empty( $_GET['hash']) ? $_GET['hash'] : $hash); if($op == "leave" && !$conf->unsub_validation){ $op = "leave_direct"; } else if($op == "leave_direct" && $conf->unsub_validation){ $op = "leave"; } else if($op == "join" && !$conf->sub_validation){ $op = "join_direct"; } else if($op == "join_direct" && $conf->sub_validation){ $op = "join"; } $popup = (!empty($_POST['popup']) ? $_POST['popup'] : "" ); if(isset($list_id) && !empty($list_id) && isValidNewsletter($conf->db_host, $conf->db_login, $conf->db_pass, $conf->db_name, $conf->table_listsconfig, $list_id) && isset($email_addr)){ if( !validEmailAddress($email_addr) ) { html_header(translate("NEWSLETTER_TITLE")); echo "<div class='subsection2$popup'>"; echo "<div class='subtitle'>".translate("SUBSCRIPTION_TITLE")."</div>"; echo "<div class='subcontent'>"; echo "<div align='center' class='error$popup'>".translate("EMAIL_ADDRESS_NOT_VALID")."</div>"; if(empty($popup)){ echo "<div align='center'><img src='img/puce.gif'> <a href='#' onclick='history.back()'>".translate("BACK")."</a></div>";} echo "</div></div>"; html_footer(); exit(); } switch($op) { case "join": html_header(translate("NEWSLETTER_TITLE")); echo "<div class='subsection2$popup'>"; echo "<div class='subtitle'>".translate("SUBSCRIPTION_TITLE")."</div>"; echo "<div class='subcontent'>"; if(!$conf->mod_sub){ $add = addSubscriberTemp( $conf->db_host, $conf->db_login, $conf->db_pass, $conf->db_name, $conf->table_email, $conf->table_temp , $list_id, $email_addr); $news = new Newsletter(); $news->getConfig($hostname,$login ,$pass,$database, $list_id,$conf->table_listsconfig); if(strlen($add) > 3){ $body = $news->subscription_body; $body.= "\n\n".translate("SUBSCRIPTION_MAIL_BODY").":\n"; $body.= $conf->base_url.$conf->path."subscription.php?op=confirm_join&email_addr=".urlencode($email_addr)."&hash=$add&list_id=$list_id"; $subj = (strtoupper($conf->charset) == "UTF-8" ? $news->subscription_subject : iconv( "UTF-8", $conf->charset , $news->subscription_subject)); $body = (strtoupper($conf->charset) == "UTF-8" ? $body : iconv( "UTF-8", $conf->charset , $body)); $mail=sendEmail($conf->sending_method,$email_addr,$news->from, $news->from_name,$subj,$body, $conf->smtp_auth, $conf->smtp_host, $conf->smtp_login, $conf->smtp_pass, $conf->charset); echo "<div align='center' class='success$popup'>".translate("SUBSCRIPTION_SEND_CONFIRM_MESSAGE")."</div>"; } else if($add==0) echo "<div align='center' class='error$popup'>".translate("SUBSCRIPTION_ALREADY_SUBSCRIBER")."</div>"; else echo "<div align='center' class='error$popup'>".translate("ERROR_SQL2", DbError())."</div>"; if(empty($popup)){ echo "<div align='center'><img src='img/puce.gif'> <a href='#' onclick='history.back()'>".translate("BACK")."</a></div>";} } else { $add = addSubscriberMod($conf->db_host, $conf->db_login, $conf->db_pass, $conf->db_name, $conf->table_email, $conf->table_sub , $list_id, $email_addr); if($add) echo "<div align='center' class='success$popup'>".translate("Subscription requested recorded, waiting for moderation")."</div>"; else if($add==0) echo "<div align='center' class='error$popup'>".translate("You are already a subscriber")."</div>"; else echo "<div align='center' class='error$popup'>".translate("Error while SQL query")."</div>"; echo "<div align='center'><img src='img/puce.gif'> <a href='index.php'>".translate("Back")."</a></div>"; } echo "</div></div>"; html_footer(); break; case "leave": html_header(translate("NEWSLETTER_TITLE")); $news = new Newsletter(); $news->getConfig($hostname,$login ,$pass,$database, $list_id,$conf->table_listsconfig); $hash = isValidSubscriber($conf->db_host,$conf->db_login ,$conf->db_pass,$conf->db_name, $conf->table_email, $list_id, $email_addr); echo "<div class='subsection2$popup'>"; echo "<div class='subtitle'>".translate("UNSUBSCRIPTION_TITLE")."</div>"; echo "<div class='subcontent'>"; if($hash){ $body = $news->quit_body; $body.= "\n\n".translate("UNSUBSCRIPTION_MAIL_BODY")." :\n"; $body.= $conf->base_url.$conf->path."subscription.php?op=confirm_leave&email_addr=".urlencode($email_addr)."&hash=$hash&list_id=$list_id"; $subj = (strtoupper($conf->charset) == "UTF-8" ? $news->quit_subject : iconv( "UTF-8", $conf->charset , $news->quit_subject)); $body = (strtoupper($conf->charset) == "UTF-8" ? $body : iconv( "UTF-8", $conf->charset , $body)); if(sendEmail($conf->sending_method,$email_addr,$news->from, $news->from_name, $subj, $body , $conf->smtp_auth, $conf->smtp_host, $conf->smtp_login, $conf->smtp_pass, $conf->charset)) echo "<div align='center' class='success$popup'>".translate("SUBSCRIPTION_SEND_CONFIRM_MESSAGE")."</div>"; else echo "<div align='center' class='error$popup'>".translate("ERROR_SENDING_CONFIRM_MAIL")."</div>"; } else echo "<div align='center' class='error$popup'>".translate("You are not a subscriber of this newsletter")."</div>"; if(empty($popup)){ echo "<div align='center'><img src='img/puce.gif'> <a href='index.php'>".translate("BACK")."</a></div>";} echo "</div></div>"; echo "</td></tr>"; table_footer(); page_footer(); html_footer(); break; case "confirm_join": html_header(translate("NEWSLETTER_TITLE")); $add= addSubscriber( $conf->db_host, $conf->db_login, $conf->db_pass, $conf->db_name, $conf->table_email, $conf->table_temp , $list_id, $email_addr,$hash); echo "<div class='subsection2$popup'>"; echo "<div class='subtitle'>".translate("SUBSCRIPTION_CONFIRMATION")."</div>"; echo "<div class='subcontent'>"; if($add==-1){ echo "<div align='center' class='error$popup'>".translate("SUBSCRIPTION_UNKNOWN_EMAIL_ADDRESS")."! </div>"; } elseif($add) { $news = new Newsletter(); $news->getConfig($hostname,$login ,$pass,$database, $list_id,$conf->table_listsconfig); $body = $news->welcome_body; $body.= "\n\n".translate("SUBSCRIPTION_UNSUBSCRIBE_LINK").":\n"; $body.= $conf->base_url.$conf->path."subscription.php?op=confirm_leave&email_addr=".urlencode($email_addr)."&hash=$hash&list_id=$list_id"; $subj = (strtoupper($conf->charset) == "UTF-8" ? $news->welcome_subject : iconv( "UTF-8", $conf->charset , $news->welcome_subject)); $body = (strtoupper($conf->charset) == "UTF-8" ? $body : iconv( "UTF-8", $conf->charset , $body)); $mail = sendEmail($conf->sending_method,$email_addr,$news->from, $news->from_name,$subj, $body, $conf->smtp_auth, $conf->smtp_host, $conf->smtp_login, $conf->smtp_pass, $conf->charset); echo "<div align='center' class='success$popup'>".translate("SUBSCRIPTION_FINISHED")."</div>"; } else { echo "<div align='center' class='error$popup'>".translate("ERROR_UNKNOWN")."</div>"; } echo "</div></div>"; html_footer(); break; case "confirm_leave": html_header(translate("NEWSLETTER_TITLE")); $rm=removeSubscriber($conf->db_host, $conf->db_login, $conf->db_pass, $conf->db_name, $conf->table_email, $list_id, $email_addr,$hash); echo "<div class='subsection2$popup'>"; echo "<div class='subtitle'>".translate("UNSUBSCRIPTION_CONFIRMATION")."</div>"; echo "<div class='subcontent'>"; if($rm==1) echo "<div align='center' class='success$popup'>".translate("UNSUBSCRIPTION_FINISHED").".</div>"; else if($rm==-1) echo "<div align='center' class='error$popup'>".translate("UNSUBSCRIPTION_UNKNOWN_EMAIL_ADDRESS")."</div>"; else echo "<div align='center' class='error$popup'>".translate("ERROR_UNKNOWN")."</div>"; echo "</div></div>"; html_footer(); break; case "join_direct": if(!$conf->sub_validation){ html_header(translate("NEWSLETTER_TITLE")); echo "<div class='subsection2$popup'>"; echo "<div class='subtitle'>".translate("SUBSCRIPTION_TITLE")."</div>"; echo "<div class='subcontent'>"; $add = addSubscriberDirect($conf->db_host, $conf->db_login, $conf->db_pass, $conf->db_name, $conf->table_email, $list_id, $email_addr); /* $add not -1 nor -2 TODO:need to be rewritten */ if(strlen($add) > 2){ $news = new Newsletter(); $news->getConfig($hostname,$login ,$pass,$database, $list_id,$conf->table_listsconfig); $body = $news->welcome_body; $body.= "\n\n".translate("UNSUBSCRIPTION_MAIL_BODY").":\n"; $body.= $conf->base_url.$conf->path."subscription.php?op=confirm_leave&email_addr=".urlencode($email_addr)."&hash=$add&list_id=$list_id"; $subj = (strtoupper($conf->charset) == "UTF-8" ? $news->welcome_subject : iconv( "UTF-8", $conf->charset , $news->welcome_subject)); $body = (strtoupper($conf->charset) == "UTF-8" ? $body : iconv( "UTF-8", $conf->charset , $body)); $mail = sendEmail($conf->sending_method,$email_addr,$news->from, $news->from_name,$subj,$body, $conf->smtp_auth, $conf->smtp_host, $conf->smtp_login, $conf->smtp_pass, $conf->charset ); echo "<div align='center' class='success$popup'>".translate("SUBSCRIPTION_FINISHED")."</div>"; } else if($add==-1){ echo "<div align='center' class='error$popup'>".translate("SUBSCRIPTION_ALREADY_SUBSCRIBER")."</div>"; } else { echo "<div align='center' class='error$popup'>".translate("ERROR_UNKNOWN")."</div>"; } if(empty($popup)){ echo "<div align='center'><img src='img/puce.gif'> <a href='#' onclick='history.back()'>".translate("BACK")."</a></div>";} echo "</div></div>"; html_footer(); } else header("Location:index.php"); break; case "leave_direct": if(!$conf->unsub_validation){ html_header(translate("NEWSLETTER_TITLE")); $rm=removeSubscriberDirect($conf->db_host, $conf->db_login, $conf->db_pass, $conf->db_name, $conf->table_email, $list_id, $email_addr); echo "<div class='subsection2$popup'>"; echo "<div class='subtitle'>".translate("UNSUBSCRIPTION_TITLE")."</div>"; echo "<div class='subcontent'>"; if($rm==1) echo "<div align='center' class='success$popup'>".translate("UNSUBSCRIPTION_FINISHED").".</div>"; else if($rm==-1) echo "<div align='center' class='error$popup'>".translate("UNSUBSCRIPTION_UNKNOWN_EMAIL_ADDRESS")."</div>"; else echo "<div align='center' class='error$popup'>".translate("ERROR_UNKNOWN")."</div>"; if(empty($popup)){ echo "<div align='center'><img src='img/puce.gif'> <a href='index.php'>".translate("BACK")."</a></div>";} echo "</div></div>"; html_footer(); } else header("Location:index.php"); break; default: header("Location:index.php"); break; } } else header("Location:index.php"); ?>
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.