mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
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:
parent
887bef5659
commit
df3da5934d
7 changed files with 430 additions and 86 deletions
|
@ -107,6 +107,7 @@ include($phpbb_root_path . 'includes/sessions.'.$phpEx);
|
|||
include($phpbb_root_path . 'includes/auth.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/functions.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/db.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
|
||||
|
||||
//
|
||||
// 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']);
|
||||
}
|
||||
|
||||
//
|
||||
// Setup the emailer
|
||||
//
|
||||
$emailer = new emailer($board_config['smtp_delivery']);
|
||||
|
||||
?>
|
296
phpBB/includes/emailer.php
Executable file
296
phpBB/includes/emailer.php
Executable 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
|
||||
|
||||
?>
|
19
phpBB/language/email/welcome_english.tpl
Executable file
19
phpBB/language/email/welcome_english.tpl
Executable 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}
|
||||
|
||||
|
21
phpBB/language/email/welcome_inactive_english.tpl
Executable file
21
phpBB/language/email/welcome_inactive_english.tpl
Executable 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}
|
|
@ -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_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";
|
||||
|
||||
|
|
|
@ -705,7 +705,7 @@ if(isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']))
|
|||
if($board_config['require_activation'])
|
||||
{
|
||||
$msg = $lang['Account_inactive'];
|
||||
$email_msg = $lang['Welcome_email_activate'];
|
||||
$email_msg = "welcome_inactive";
|
||||
}
|
||||
else if($coppa)
|
||||
{
|
||||
|
@ -715,23 +715,24 @@ if(isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']))
|
|||
else
|
||||
{
|
||||
$msg = $lang['Account_added'];
|
||||
$email_msg = $lang['Welcome_email'];
|
||||
$email_msg = "welcome";
|
||||
}
|
||||
|
||||
if(!$coppa)
|
||||
{
|
||||
$email_msg .= "\r\n" . $board_config['board_email'];
|
||||
$email_headers = "From: " . $board_config['board_email_from'] . "\r\n";
|
||||
|
||||
if($board_config['smtp_delivery'] && $board_config['smtp_host'] != "")
|
||||
{
|
||||
include($phpbb_root_path . 'includes/smtp.'.$phpEx);
|
||||
smtpmail($email, $lang['Welcome_subject'], $email_msg, $email_headers);
|
||||
}
|
||||
else
|
||||
{
|
||||
mail($email, $lang['Welcome_subject'], $email_msg, $email_headers);
|
||||
}
|
||||
$emailer->use_template($email_msg);
|
||||
$emailer->email_address($email);
|
||||
$emailer->set_subject($lang['Welcome_subject']);
|
||||
$emailer->extra_headers($email_headers);
|
||||
|
||||
$emailer->assign_vars(array("WELCOME_MSG" => $lang['Welcome_subject'],
|
||||
"USERNAME" => $username,
|
||||
"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);
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="row1">Enable GZip Compression:</td>
|
||||
<td class="row2"><input type="radio" name="gzip" value="1" {GZIP_YES}> Yes <input type="radio" name="gzip" value="1" {GZIP_NO}> No</td>
|
||||
<td class="row2"><input type="radio" name="gzip" value="1" {GZIP_YES}> Yes <input type="radio" name="gzip" value="0" {GZIP_NO}> No</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2"><span class="cattitle">User/Forum Ability Settings</span></td>
|
||||
|
|
Loading…
Add table
Reference in a new issue