Skip to content

Commit 2a704f6

Browse files
committed
Implemented: FS#891 - Email Forward check box to Leave a copy.
1 parent a5c4691 commit 2a704f6

File tree

7 files changed

+37
-3
lines changed

7 files changed

+37
-3
lines changed

install/sql/ispconfig3.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,7 @@ CREATE TABLE `mail_user` (
560560
`gid` int(11) unsigned NOT NULL default '5000',
561561
`maildir` varchar(255) NOT NULL default '',
562562
`quota` bigint(20) NOT NULL default '-1',
563+
`cc` varchar(255) NOT NULL default '',
563564
`homedir` varchar(255) NOT NULL,
564565
`autoresponder` enum('n','y') NOT NULL default 'n',
565566
`autoresponder_start_date` datetime NOT NULL default '0000-00-00 00:00:00',

interface/web/mail/form/mail_user.tform.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,18 @@
110110
'width' => '30',
111111
'maxlength' => '255'
112112
),
113+
'cc' => array (
114+
'datatype' => 'VARCHAR',
115+
'formtype' => 'TEXT',
116+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
117+
'regex' => '/^(\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\w+\.[a-z]{2,10}){0,1}$/i',
118+
'errmsg'=> 'cc_error_isemail'),
119+
),
120+
'default' => '',
121+
'value' => '',
122+
'width' => '30',
123+
'maxlength' => '255'
124+
),
113125
'maildir' => array (
114126
'datatype' => 'VARCHAR',
115127
'formtype' => 'TEXT',

interface/web/mail/lib/lang/en_mail_user.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,6 @@ $wb["move_junk_txt"] = 'Move Spam Emails to Junk directory';
3737
$wb["name_txt"] = 'Realname';
3838
$wb["name_optional_txt"] = '(Optional)';
3939
$wb['autoresponder_active'] = 'Enable the autoresponder';
40+
$wb['cc_txt'] = 'Send copy to';
41+
$wb['cc_error_isemail'] = 'The "Send copy to" field does not conatin a valid email address';
4042
?>

interface/web/mail/templates/mail_user_mailbox_edit.htm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ <h2><tmpl_var name="list_head_txt"></h2>
3030
<label for="quota">{tmpl_var name='quota_txt'}</label>
3131
<input name="quota" id="quota" value="{tmpl_var name='quota'}" size="30" maxlength="255" type="text" class="textInput formLengthLimit" /><p class="formInputUnity">&nbsp;MB</p>
3232
</div>
33+
<div class="ctrlHolder">
34+
<label for="name">{tmpl_var name='cc_txt'}</label>
35+
<input name="cc" id="cc" value="{tmpl_var name='cc'}" size="30" maxlength="255" type="text" class="textInput" /> &nbsp; {tmpl_var name='name_optional_txt'}
36+
</div>
3337
<div class="ctrlHolder">
3438
<label for="policy">{tmpl_var name='policy_txt'}</label>
3539
<select name="policy" id="policy" class="selectInput">

server/conf/sieve_filter.master

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11

22
require ["fileinto", "regex", "vacation"];
33

4+
<tmpl_if name="cc">
5+
# Send a copy of email to
6+
redirect "<tmpl_var name='cc'>";
7+
keep;
8+
</tmpl_if>
9+
410
<tmpl_if name="move_junk" op="==" value="y">
511
# Move spam to spam folder
612
if header :contains "X-Spam-Flag" "YES" {

server/plugins-available/maildeliver_plugin.inc.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ function update($event_name,$data) {
8989
or $data["old"]["autoresponder"] != $data["new"]["autoresponder"]
9090
or (isset($data["new"]["email"]) and $data["old"]["email"] != $data["new"]["email"])
9191
or $data["old"]["autoresponder_start_date"] != $data["new"]["autoresponder_start_date"]
92-
or $data["old"]["autoresponder_end_date"] != $data["new"]["autoresponder_end_date"]) {
92+
or $data["old"]["autoresponder_end_date"] != $data["new"]["autoresponder_end_date"]
93+
or $data["old"]["cc"] != $data["new"]["cc"]
94+
) {
9395

9496
$app->log("Mailfilter config has been changed",LOGLEVEL_DEBUG);
9597

server/plugins-available/maildrop_plugin.inc.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,10 @@ function update($event_name,$data) {
166166
}
167167

168168
// Write the custom mailfilter script, if mailfilter recipe has changed
169-
if($data["old"]["custom_mailfilter"] != $data["new"]["custom_mailfilter"] or
170-
$data["old"]["move_junk"] != $data["new"]["move_junk"]) {
169+
if($data["old"]["custom_mailfilter"] != $data["new"]["custom_mailfilter"]
170+
or $data["old"]["move_junk"] != $data["new"]["move_junk"]
171+
or $data["old"]["cc"] != $data["new"]["cc"]) {
172+
171173
$app->log("Mailfilter config has been changed",LOGLEVEL_DEBUG);
172174
if(trim($data["new"]["custom_mailfilter"]) != '' or $data["new"]["move_junk"] != 'n') {
173175
// Delete the old filter recipe
@@ -184,6 +186,11 @@ function update($event_name,$data) {
184186
$config_file_path = $this->mailfilter_config_dir.'/'.$email_parts[1].'/'.$email_parts[0].'/.mailfilter';
185187

186188
$mailfilter_content = '';
189+
190+
if($data["new"]["cc"] != '') {
191+
$mailfilter_content .= "cc \"!".$data["new"]["cc"]."\"\n";
192+
}
193+
187194
if($data["new"]["move_junk"] == 'y') {
188195
$mailfilter_content .= file_get_contents($conf["rootpath"].'/conf/mailfilter_move_junk.master')."\n";
189196
}

0 commit comments

Comments
 (0)