diff --git a/interface/web/client/client_message.php b/interface/web/client/client_message.php
new file mode 100644
index 0000000000000000000000000000000000000000..f555c9995515a4acf364325aff376d9cb5845a9a
--- /dev/null
+++ b/interface/web/client/client_message.php
@@ -0,0 +1,110 @@
+auth->check_module_permissions('client');
+
+//* This function is not available in demo mode
+if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
+
+$app->uses('tpl');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/client_message.htm');
+
+//* load language file
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_client_message.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+
+$msg = '';
+$error = '';
+
+//* Save data
+if(isset($_POST) && count($_POST) > 1) {
+
+ //* Check values
+ if(!preg_match("/^\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\w+\.[a-zA-Z0-9\-]{2,30}$/i", $_POST['sender'])) $error .= $wb['sender_invalid_error'].'
';
+ if(empty($_POST['subject'])) $error .= $wb['subject_invalid_error'].'
';
+ if(empty($_POST['message'])) $error .= $wb['message_invalid_error'].'
';
+
+ //* Send message
+ if($error == '') {
+ //* Select all clients and resellers
+ if($_SESSION["s"]["user"]["typ"] == 'admin'){
+ $sql = "SELECT * FROM client WHERE email != ''";
+ } else {
+ $client_id = intval($_SESSION['s']['user']['client_id']);
+ if($client_id == 0) die('Invalid Client ID.');
+ $sql = "SELECT * FROM client WHERE email != '' AND parent_client_id = '$client_id'";
+ }
+
+ //* Get clients
+ $clients = $app->db->queryAllRecords($sql);
+ if(is_array($clients)) {
+ $msg = $wb['email_sent_to_txt'].' ';
+ foreach($clients as $client) {
+
+ //* Parse cleint details into message
+ $message = $_POST['message'];
+ foreach($client as $key => $val) {
+ $message = str_replace('{'.$key.'}', $val, $message);
+ }
+
+ //* Send the email
+ $app->functions->mail($client['email'], $_POST['subject'], $message, $_POST['sender']);
+ $msg .= $client['email'].', ';
+ }
+ $msg = substr($msg,0,-2);
+ }
+
+ } else {
+ $app->tpl->setVar('sender',$_POST['sender']);
+ $app->tpl->setVar('subject',$_POST['subject']);
+ $app->tpl->setVar('message',$_POST['message']);
+ }
+}
+
+if($_SESSION["s"]["user"]["typ"] == 'admin'){
+ $app->tpl->setVar('form_legend_txt',$wb['form_legend_admin_txt']);
+} else {
+ $app->tpl->setVar('form_legend_txt',$wb['form_legend_client_txt']);
+}
+
+$app->tpl->setVar('okmsg',$msg);
+$app->tpl->setVar('error',$error);
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
diff --git a/interface/web/client/lib/lang/en.lng b/interface/web/client/lib/lang/en.lng
index 4b10b2b8e687a879d6f69aa92cbdc6693a9372d4..03e36b2ceb254a8df92a473cfb90fcbd7aa7f069 100644
--- a/interface/web/client/lib/lang/en.lng
+++ b/interface/web/client/lib/lang/en.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
$wb["error_has_clients"] = 'This reseller has clients. Delete the clients of the reseller first.';
$wb['add_additional_template_txt'] = 'Add additional template';
$wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
?>
\ No newline at end of file
diff --git a/interface/web/client/lib/lang/en_client_message.lng b/interface/web/client/lib/lang/en_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/en_client_message.lng
@@ -0,0 +1,13 @@
+
diff --git a/interface/web/client/lib/module.conf.php b/interface/web/client/lib/module.conf.php
index f37461d0d9740fe6ded82fad3b8200d5caf15aa7..3e36a26e88782d011f0a389c98da3a4210f4702e 100644
--- a/interface/web/client/lib/module.conf.php
+++ b/interface/web/client/lib/module.conf.php
@@ -52,9 +52,19 @@ $items[] = array( 'title' => "Add Reseller",
$module["nav"][] = array( 'title' => 'Resellers',
'open' => 1,
'items' => $items);
+
+unset($items);
}
+$items[] = array( 'title' => "Send email",
+ 'target' => 'content',
+ 'link' => 'client/client_message.php',
+ 'html_id' => 'reseller_add');
+$module["nav"][] = array( 'title' => 'Messaging',
+ 'open' => 1,
+ 'items' => $items);
+unset($items);
?>
\ No newline at end of file
diff --git a/interface/web/client/templates/client_message.htm b/interface/web/client/templates/client_message.htm
new file mode 100644
index 0000000000000000000000000000000000000000..cc2183ed4b9eba9552ce6a3399f2cf9cd3f1f16b
--- /dev/null
+++ b/interface/web/client/templates/client_message.htm
@@ -0,0 +1,31 @@
+