From: Mark Wells Date: Mon, 20 May 2013 19:36:06 +0000 (-0700) Subject: allow friendly from: addresses on email notices, #22962 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=eef99d4b1595d23b73f8800900ba984fe242b8c4 allow friendly from: addresses on email notices, #22962 --- diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm index dbebf33b8..9c18961ea 100644 --- a/FS/FS/Misc.pm +++ b/FS/FS/Misc.pm @@ -171,8 +171,15 @@ sub send_email { } + my $from = $options{from}; + $from =~ s/^\s*//; $from =~ s/\s*$//; + if ( $from =~ /^(.*)\s*<(.*@.*)>$/ ) { + # a common idiom + $from = $2; + } + my $domain; - if ( $options{'from'} =~ /\@([\w\.\-]+)/ ) { + if ( $from =~ /\@([\w\.\-]+)/ ) { $domain = $1; } else { warn 'no domain found in invoice from address '. $options{'from'}. @@ -247,7 +254,7 @@ sub send_email { push @to, $options{bcc} if defined($options{bcc}); local $@; # just in case eval { sendmail($message, { transport => $transport, - from => $options{from}, + from => $from, to => \@to }) }; my $error = ''; diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index f63854ca0..ccba1de3a 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -678,6 +678,10 @@ sub start_job { #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n" # if $DEBUG; + # + # XXX FS::queue::insert knows how to do this. + # not changing it here because that requires changing it everywhere else, + # too, but we should eventually fix it my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) ); diff --git a/FS/FS/cust_main_Mixin.pm b/FS/FS/cust_main_Mixin.pm index a0677060e..212c04e0f 100644 --- a/FS/FS/cust_main_Mixin.pm +++ b/FS/FS/cust_main_Mixin.pm @@ -539,6 +539,7 @@ sub process_email_search_result { die "error loading FS::$table: $@\n" if $@; my $error = "FS::$table"->email_search_result( $param ); + dbh->commit; # save failed jobs before rethrowing the error die $error if $error; } diff --git a/httemplate/misc/email-customers.html b/httemplate/misc/email-customers.html index fcd79d7f8..ad67b8d7e 100644 --- a/httemplate/misc/email-customers.html +++ b/httemplate/misc/email-customers.html @@ -104,13 +104,19 @@ Template: ) %>
- <% include('/elements/tr-input-text.html', - 'field' => 'from', - 'label' => 'From:', - 'size' => 50, - ) - %> - + <& /elements/tr-td-label.html, 'label' => 'From:' &> + + <% include('/elements/tr-input-text.html', 'field' => 'subject', 'label' => 'Subject:', @@ -151,6 +157,7 @@ Template: die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Bulk send customer notices'); +my $conf = FS::Conf->new; my $table = $cgi->param('table') or die "'table' required"; my %search; if ( $cgi->param('search') ) { @@ -169,7 +176,15 @@ else { my $title = 'Send customer notices'; my $num_cust; -my $from = $cgi->param('from') || ''; +my $from = ''; +if ( $cgi->param('from') ) { + $from = $cgi->param('from'); +} elsif ( $cgi->param('from_name') ) { + $from = ($cgi->param('from_name') . ' <' . $cgi->param('from_addr') . '>'); +} elsif ( $cgi->param('from_addr') ) { + $from = $cgi->param('from_addr'); +} + my $subject = $cgi->param('subject') || ''; my $html_body = $cgi->param('html_body') || '';
<& /elements/input-text.html, + 'field' => 'from_name', + 'value' => $conf->config('company_name'), #? + 'size' => 20, + &> <\ + <& /elements/input-text.html, + 'field' => 'from_addr', + 'type' => 'email', # HTML5, woot + 'value' => $conf->config('invoice_from'), + 'size' => 20, + &>>