summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormark <mark>2010-08-16 17:49:03 +0000
committermark <mark>2010-08-16 17:49:03 +0000
commit4774ede40353662ddcb4181d824ab2167c68ff8c (patch)
treed38caffb40f573dd82e74be5595576d374508ad0
parent55476aa0484f5ebada5f36e1407722d84609bd34 (diff)
Bcc address for impending recur notices, RT#8953
-rw-r--r--FS/FS/Misc.pm14
-rw-r--r--FS/FS/Schema.pm1
-rw-r--r--FS/FS/msg_template.pm20
-rw-r--r--httemplate/edit/msg_template.html2
4 files changed, 25 insertions, 12 deletions
diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm
index 3b0616a91..0e8d92bb3 100644
--- a/FS/FS/Misc.pm
+++ b/FS/FS/Misc.pm
@@ -113,7 +113,7 @@ sub send_email {
# join("\n", map { " $_: ". $options{$_} } keys %options ). "\n"
}
- my $to = ref($options{to}) ? join(', ', @{ $options{to} } ) : $options{to};
+ my @to = ref($options{to}) ? @{ $options{to} } : ( $options{to} );
my @mimeargs = ();
my @mimeparts = ();
@@ -172,7 +172,7 @@ sub send_email {
my $message = MIME::Entity->build(
'From' => $options{'from'},
- 'To' => $to,
+ 'To' => join(', ', @to),
'Sender' => $options{'from'},
'Reply-To' => $options{'from'},
'Date' => time2str("%a, %d %b %Y %X %z", time),
@@ -232,8 +232,11 @@ sub send_email {
$transport = Email::Sender::Transport::SMTP->new( %smtp_opt );
}
+ push @to, $options{bcc} if defined($options{bcc});
local $@; # just in case
- eval { sendmail($message, { transport => $transport }) };
+ eval { sendmail($message, { transport => $transport,
+ from => $options{from},
+ to => \@to }) };
if(ref($@) and $@->isa('Email::Sender::Failure')) {
return ($@->code ? $@->code.' ' : '').$@->message
@@ -257,6 +260,10 @@ Sender address, required
Recipient address, required
+=item bcc
+
+Blind copy address, optional
+
=item subject
email subject, required
@@ -290,6 +297,7 @@ sub generate_email {
my %return = (
'from' => $args{'from'},
'to' => $args{'to'},
+ 'bcc' => $args{'bcc'},
'subject' => $args{'subject'},
);
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index dc8f2f3aa..076be7ed8 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -2946,6 +2946,7 @@ sub tables_hashref {
'body', 'blob', 'NULL', '', '', '',
'disabled', 'char', 'NULL', 1, '', '',
'from_addr', 'varchar', 'NULL', 255, '', '',
+ 'bcc_addr', 'varchar', 'NULL', 255, '', '',
],
'primary_key' => 'msgnum',
'unique' => [ ['msgname', 'mime_type'] ],
diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm
index d1db17dbc..121742129 100644
--- a/FS/FS/msg_template.pm
+++ b/FS/FS/msg_template.pm
@@ -255,9 +255,10 @@ sub prepare {
my $conf = new FS::Conf;
(
- 'from' => $self->from ||
+ 'from' => $self->from_addr ||
scalar( $conf->config('invoice_from', $cust_main->agentnum) ),
'to' => \@to,
+ 'bcc' => $self->bcc_addr || undef,
'subject' => $subject,
'html_body' => $body,
'text_body' => HTML::FormatText->new(leftmargin => 0, rightmargin => 70
@@ -398,26 +399,27 @@ sub _upgrade_data {
my ($self, %opts) = @_;
my @fixes = (
- [ 'alerter_msgnum', 'alerter_template', '', '' ],
- [ 'cancel_msgnum', 'cancelmessage', 'cancelsubject', '' ],
- [ 'decline_msgnum', 'declinetemplate', '', '' ],
- [ 'impending_recur_msgnum', 'impending_recur_template', '', '' ],
- [ 'payment_receipt_msgnum', 'payment_receipt_email', '', '' ],
- [ 'welcome_msgnum', 'welcome_email', 'welcome_email-subject', 'welcome_email-from' ],
- [ 'warning_msgnum', 'warning_email', 'warning_email-subject', 'warning_email-from' ],
+ [ 'alerter_msgnum', 'alerter_template', '', '', '' ],
+ [ 'cancel_msgnum', 'cancelmessage', 'cancelsubject', '', '' ],
+ [ 'decline_msgnum', 'declinetemplate', '', '', '' ],
+ [ 'impending_recur_msgnum', 'impending_recur_template', '', '', 'impending_recur_bcc' ],
+ [ 'payment_receipt_msgnum', 'payment_receipt_email', '', '', '' ],
+ [ 'welcome_msgnum', 'welcome_email', 'welcome_email-subject', 'welcome_email-from', '' ],
+ [ 'warning_msgnum', 'warning_email', 'warning_email-subject', 'warning_email-from', '' ],
);
my $conf = new FS::Conf;
my @agentnums = ('', map {$_->agentnum} qsearch('agent', {}));
foreach my $agentnum (@agentnums) {
foreach (@fixes) {
- my ($newname, $oldname, $subject, $from) = @$_;
+ my ($newname, $oldname, $subject, $from, $bcc) = @$_;
if ($conf->exists($oldname, $agentnum)) {
my $new = new FS::msg_template({
'msgname' => $oldname,
'agentnum' => $agentnum,
'from_addr' => ($from && $conf->config($from, $agentnum)) ||
$conf->config('invoice_from', $agentnum),
+ 'bcc_addr' => ($bcc && $conf->config($from, $agentnum)) || '',
'subject' => ($subject && $conf->config($subject, $agentnum)) || '',
'mime_type' => 'text/html',
'body' => join('<BR>',$conf->config($oldname, $agentnum)),
diff --git a/httemplate/edit/msg_template.html b/httemplate/edit/msg_template.html
index c38c40e4a..460f4dcc2 100644
--- a/httemplate/edit/msg_template.html
+++ b/httemplate/edit/msg_template.html
@@ -10,11 +10,13 @@
'fields' => [ 'msgname',
'subject',
'from_addr',
+ 'bcc_addr',
{ field=>'body', type=>'htmlarea', width=>763 },
],
'labels' => { 'msgnum' => 'Template',
'msgname' => 'Template name',
'from_addr' => 'Return address',
+ 'bcc_addr' => 'Bcc address (optional)',
'subject' => 'Message subject',
'body' => 'Message template',
},