Added emailer class, did alterations and templates for registration

Welcome message vars can be removed from lang file


git-svn-id: file:///svn/phpbb/trunk@844 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
James Atkinson 2001-08-13 01:07:14 +00:00
parent 887bef5659
commit df3da5934d
7 changed files with 430 additions and 86 deletions

View file

@ -107,6 +107,7 @@ include($phpbb_root_path . 'includes/sessions.'.$phpEx);
include($phpbb_root_path . 'includes/auth.'.$phpEx); include($phpbb_root_path . 'includes/auth.'.$phpEx);
include($phpbb_root_path . 'includes/functions.'.$phpEx); include($phpbb_root_path . 'includes/functions.'.$phpEx);
include($phpbb_root_path . 'includes/db.'.$phpEx); include($phpbb_root_path . 'includes/db.'.$phpEx);
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
// //
// Obtain and encode users IP // Obtain and encode users IP
@ -200,4 +201,9 @@ if($board_config['board_disable'] && !defined("IN_ADMIN"))
message_die(GENERAL_MESSAGE, $lang['Board_disable'], $lang['Information']); message_die(GENERAL_MESSAGE, $lang['Board_disable'], $lang['Information']);
} }
//
// Setup the emailer
//
$emailer = new emailer($board_config['smtp_delivery']);
?> ?>

296
phpBB/includes/emailer.php Executable file
View file

@ -0,0 +1,296 @@
<?php
/***************************************************************************
smtp.php - description
-------------------
begin : Sunday Aug. 12, 2001
copyright : (C) 2001 The phpBB Group
email : support@phpbb.com
$Id$
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
//
// The emailer class has support for attaching files, that isn't implemented
// in the 2.0 release but we can probable find some way of using it in a future
// release
//
class emailer
{
var $tpl_file;
var $use_smtp;
var $msg;
var $mimeOut;
var $arrPlaceHolders = array(); // an associative array that has the key = placeHolderName and val = placeHolderValue.
var $subject, $extra_headers, $address;
function emailer($use_smtp)
{
$this->use_smtp = $use_smtp;
$this->tpl_file = NULL;
$this->sddress = NULL;
$this->msg = "";
$this->mimeOut = "";
}
//
// Sets an email address to send to
//
function email_address($address)
{
$success = true;
$this->address = '';
$this->address .= $address;
return $success;
}
//
// set up subject for mail
//
function set_subject($subject)
{
$this->subject = $subject;
}
//
// set up extra mail headers
//
function extra_headers($headers)
{
$this->extra_headers = $headers;
}
function use_template($template_file)
{
global $board_config;
$phpbb_root_path = "./";
$template_file = $phpbb_root_path . "language/email/" . $template_file . "_" . $board_config['default_lang'] . ".tpl";
if (!file_exists($template_file))
{
message_die(GENERAL_ERROR, "Couldn't find template file: $template_file", "", __LINE__, __FILE__);
}
else
{
$this->tpl_file = $template_file;
//
// Load the email text into the $this->msg variable
//
if(!$this->load_msg())
{
message_die(GENERAL_ERROR, "Couldn't load template file: $template_file", "", __LINE__, __FILE__);
}
}
return TRUE;
}
//
// Open the template file and read in the message
//
function load_msg()
{
if ($this->tpl_file == NULL)
{
message_die(GENERAL_ERROR, "No template file set", "", __LINE__, __FILE__);
}
else
{
if(!($fd = fopen($this->tpl_file, 'r')))
{
message_die(GENERAL_ERROR, "fopen failed opening template file", "", __LINE__, __FILE__);
}
else
{
$this->msg .= fread($fd, filesize($this->tpl_file));
fclose($fd);
}
}
return TRUE;
}
function assign_vars($vars)
{
if(empty($this->vars))
{
$this->vars = $vars;
}
else
{
$this->vars .= $vars;
}
}
function parse_email()
{
@reset($this->vars);
while (list($key, $val) = @each($this->vars))
{
$$key = $val;
}
//$this->mailMsg = ereg_replace("<!!( )*([^>]*)( )*!!>", '$this->arrPlaceHolders['."\\2".']', $this->mailMsg);
// $this->msg = ereg_replace("{( )*([^>]*)( )*}", '$'."\\2", $this->msg);
$this->msg = preg_replace('#\{([a-z0-9\-_]*?)\}#is', '$'."\\1", $this->msg);
// Escape all quotes, else the eval will fail.
$this->msg = str_replace ("\"", "\\\"", $this->msg);
eval("\$this->msg = \"$this->msg\";");
return TRUE;
}
//
// Send the mail out to the recipients set previously in var $this->address
//
function send()
{
global $phpEx;
$phpbb_root_path = "./";
if ($this->address == NULL)
{
message_die(GENERAL_ERROR, "No email address set", "", __LINE__, __FILE__);
}
else
{
if(!$this->parse_email())
{
return FALSE;
}
if($this->use_smtp)
{
include($phpbb_root_path . "includes/smtp.".$phpEx);
if(!smtpmail($this->address, $this->subject, $this->msg, $this->extra_headers))
{
message_die(GENERAL_ERROR, "Sending via SMTP failed", "", __LINE__, __FILE__);
}
}
else
{
@mail($this->address, $this->subject, $this->msg, $this->extra_headers);
}
}
return TRUE;
}
//
// Attach files via MIME.
//
function attachFile($filename, $mimetype="application/octet-stream", $szFromAddress, $szFilenameToDisplay)
{
$mime_boundary = "--==================_846811060==_";
$this->mailMsg = "--".$mime_boundary."\nContent-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n\n".$this->mailMsg;
if ($mime_filename)
{
$filename = $mime_filename;
$encoded = $this->encode_file($filename);
}
$fd = fopen($filename, "r");
$contents = fread($fd, filesize($filename));
$this->mimeOut = "--" . $mime_boundary . "\n";
$this->mimeOut .= "Content-Type: " . $mimetype . ";\n\tname=\"$szFilenameToDisplay\"\n";
$this->mimeOut .= "Content-Transfer-Encoding: quoted-printable\n";
$this->mimeOut .= "Content-Disposition: attachment;\n\tfilename=\"$szFilenameToDisplay\"\n\n";
if ($mimetype == "message/rfc822")
{
$this->mimeOut .= "From: ".$szFromAddress."\n";
$this->mimeOut .= "To: ".$this->emailAddress."\n";
$this->mimeOut .= "Date: ".date("D, d M Y G:i:s ").$this->getTimeZoneInEmailFormat()."\n";
$this->mimeOut .= "Reply-To:".$szFromAddress."\n";
$this->mimeOut .= "Subject: ".$this->mailSubject."\n";
$this->mimeOut .= "X-Mailer: PHP/".phpversion()."\n";
$this->mimeOut .= "MIME-Version: 1.0\n";
}
$this->mimeOut .= $contents."\n";
$this->mimeOut .= "--" . $mime_boundary . "--" . "\n";
return $out;
// added -- to notify email client attachment is done
}
function getMimeHeaders($filename, $mime_filename="")
{
$mime_boundary = "--==================_846811060==_";
if ($mime_filename)
{
$filename = $mime_filename;
}
$out = "MIME-Version: 1.0\n";
$out .= "Content-Type: multipart/mixed;\n\tboundary=\"$mime_boundary\"\n\n";
$out .= "This message is in MIME format. Since your mail reader does not understand\n";
$out .= "this format, some or all of this message may not be legible.";
return $out;
}
//
// Split string by RFC 2045 semantics (76 chars per line, end with \r\n).
//
function myChunkSplit($str)
{
$stmp = $str;
$len = strlen($stmp);
$out = "";
while ($len > 0)
{
if ($len >= 76)
{
$out .= substr($stmp, 0, 76) . "\r\n";
$stmp = substr($stmp, 76);
$len = $len - 76;
}
else
{
$out .= $stmp . "\r\n";
$stmp = "";
$len = 0;
}
}
return $out;
}
//
// Split the specified file up into a string and return it
//
function encode_file($sourcefile)
{
if (is_readable($sourcefile))
{
$fd = fopen($sourcefile, "r");
$contents = fread($fd, filesize($sourcefile));
$encoded = $this->myChunkSplit(base64_encode($contents));
fclose($fd);
}
return $encoded;
}
} // class emailer
?>

View file

@ -0,0 +1,19 @@
{WELCOME_MSG}
Please keep this email for your records.
Your account information is as follows:
----------------------------
Username: {USERNAME}
Password: {PASSWORD}
----------------------------
Please do not forget your password as it has been encrypted in our database and we cannot retrieve it for you.
However, should you forget your password you can request a new one which will be activated in the same way as this account.
Thank you for registering.
{EMAIL_SIG}

View file

@ -0,0 +1,21 @@
{WELCOME_MSG}
Please keep this email for your records.
Your account information is as follows:
----------------------------
Username: {USERNAME}
Password: {PASSWORD}
----------------------------
Your account is currently inactive. You cannot use it until you visit the following link:
{ACTIVATE_URL}
Please do not forget your password as it has been encrypted in our database and we cannot retrieve it for you.
However, should you forget your password you can request a new one which will be activated in the same way as this account.
Thank you for registering.
{EMAIL_SIG}

View file

@ -425,6 +425,7 @@ $lang['Avatar_imagesize'] = "The avatar must be less than " . $board_config['ava
$lang['Account_added'] = "Thank you for registering, your account has been created. You may now login with your username and password"; $lang['Account_added'] = "Thank you for registering, your account has been created. You may now login with your username and password";
$lang['Account_inactive'] = "Your account has been created. However, this forum requires account activation, an activation key has been sent to the email address you provided. Pease check your email for further information"; $lang['Account_inactive'] = "Your account has been created. However, this forum requires account activation, an activation key has been sent to the email address you provided. Pease check your email for further information";
$lang['Account_active'] = "Your account has now been activated. Thank you for registering";
$lang['Welcome_subject'] = "Welcome to " . $board_config['sitename'] . " Forums"; $lang['Welcome_subject'] = "Welcome to " . $board_config['sitename'] . " Forums";

View file

@ -705,7 +705,7 @@ if(isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']))
if($board_config['require_activation']) if($board_config['require_activation'])
{ {
$msg = $lang['Account_inactive']; $msg = $lang['Account_inactive'];
$email_msg = $lang['Welcome_email_activate']; $email_msg = "welcome_inactive";
} }
else if($coppa) else if($coppa)
{ {
@ -715,23 +715,24 @@ if(isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']))
else else
{ {
$msg = $lang['Account_added']; $msg = $lang['Account_added'];
$email_msg = $lang['Welcome_email']; $email_msg = "welcome";
} }
if(!$coppa) if(!$coppa)
{ {
$email_msg .= "\r\n" . $board_config['board_email'];
$email_headers = "From: " . $board_config['board_email_from'] . "\r\n"; $email_headers = "From: " . $board_config['board_email_from'] . "\r\n";
if($board_config['smtp_delivery'] && $board_config['smtp_host'] != "") $emailer->use_template($email_msg);
{ $emailer->email_address($email);
include($phpbb_root_path . 'includes/smtp.'.$phpEx); $emailer->set_subject($lang['Welcome_subject']);
smtpmail($email, $lang['Welcome_subject'], $email_msg, $email_headers); $emailer->extra_headers($email_headers);
}
else $emailer->assign_vars(array("WELCOME_MSG" => $lang['Welcome_subject'],
{ "USERNAME" => $username,
mail($email, $lang['Welcome_subject'], $email_msg, $email_headers); "PASSWORD" => $password_confirm,
} "ACTIVATE_URL" => "http://".$SERVER_NAME."/".$PHP_SELF."?mode=activate&act_key=$act_key",
"EMAIL_SIG" => $board_config['board_email']));
$emailer->send();
} }
message_die(GENERAL_MESSAGE, $msg); message_die(GENERAL_MESSAGE, $msg);

View file

@ -58,7 +58,7 @@
</tr> </tr>
<tr> <tr>
<td class="row1">Enable GZip Compression:</td> <td class="row1">Enable GZip Compression:</td>
<td class="row2"><input type="radio" name="gzip" value="1" {GZIP_YES}> Yes&nbsp;&nbsp;<input type="radio" name="gzip" value="1" {GZIP_NO}> No</td> <td class="row2"><input type="radio" name="gzip" value="1" {GZIP_YES}> Yes&nbsp;&nbsp;<input type="radio" name="gzip" value="0" {GZIP_NO}> No</td>
</tr> </tr>
<tr> <tr>
<td class="cat" colspan="2"><span class="cattitle">User/Forum Ability Settings</span></td> <td class="cat" colspan="2"><span class="cattitle">User/Forum Ability Settings</span></td>