[freeside-commits] branch master updated. f9f1313aed3c86fe4287c4d978b4981d574c9917
Ivan Kohler
ivan at freeside.biz
Sat Feb 13 16:09:12 PST 2021
The branch, master has been updated
via f9f1313aed3c86fe4287c4d978b4981d574c9917 (commit)
from e35f3c4160cbd2cc952411f7fc3ba97a36f61e6d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f9f1313aed3c86fe4287c4d978b4981d574c9917
Author: Ivan Kohler <ivan at freeside.biz>
Date: Sat Feb 13 16:09:11 2021 -0800
eliminate some false laziness in FS::Misc::send_email vs. msg_template/email.pm send_prepared :/
diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm
index 1c100eacd..139f05ddf 100644
--- a/FS/FS/Misc.pm
+++ b/FS/FS/Misc.pm
@@ -15,8 +15,7 @@ use Encode;
#instead
@ISA = qw( Exporter );
- at EXPORT_OK = qw( send_email generate_email send_fax
- email_sender_transport_or_error
+ at EXPORT_OK = qw( send_email generate_email send_fax _sendmail
states_hash counties cities state_label
card_types
pkg_freqs
@@ -281,27 +280,11 @@ sub send_email {
push @env_to, map { $_->address } Email::Address->parse($dest);
}
- my $transport = email_sender_transport_or_error($domain);
-
- my $error = '';
- if ( ref($transport) ) {
-
- local $SIG{__DIE__}; # don't want Mason __DIE__ handler active
- local $@; # just in case
- eval { sendmail($message, { transport => $transport,
- from => $from,
- to => \@env_to }) };
-
- if (ref($@) and $@->isa('Email::Sender::Failure')) {
- $error = $@->code.' ' if $@->code;
- $error .= $@->message;
- } else {
- $error = $@;
- }
-
- } else {
- $error = $transport;
- }
+ my $error = _sendmail( $message, { 'from' => $from,
+ 'to' => \@env_to,
+ 'domain' => $domain,
+ }
+ );
# Logging
if ( $conf->exists('log_sent_mail') ) {
@@ -325,8 +308,9 @@ sub send_email {
}
-sub email_sender_transport_or_error {
- my $domain = shift;
+sub _sendmail {
+ my($message, $options) = @_;
+ my $domain = delete $options->{'domain'};
my %smtp_opt = ( 'host' => $conf->config('smtpmachine'),
'helo' => $domain,
@@ -347,7 +331,22 @@ sub email_sender_transport_or_error {
$smtp_opt{'ssl'} = 1 if $enc eq 'tls';
}
- Email::Sender::Transport::SMTP->new( %smtp_opt );
+ $options->{'transport'} = Email::Sender::Transport::SMTP->new( %smtp_opt );
+
+ my $error = '';
+
+ local $SIG{__DIE__}; # don't want Mason __DIE__ handler active
+ local $@; # just in case
+ eval { sendmail($message, $options) };
+
+ if (ref($@) and $@->isa('Email::Sender::Failure')) {
+ $error = $@->code.' ' if $@->code;
+ $error .= $@->message;
+ } else {
+ $error = $@;
+ }
+
+ $error;
}
diff --git a/FS/FS/msg_template/email.pm b/FS/FS/msg_template/email.pm
index aebac74b7..8fb81f677 100644
--- a/FS/FS/msg_template/email.pm
+++ b/FS/FS/msg_template/email.pm
@@ -16,7 +16,7 @@ use HTML::TreeBuilder;
use Encode;
# needed to send email
-use FS::Misc qw( generate_email email_sender_transport_or_error );
+use FS::Misc qw( generate_email _sendmail );
use FS::Conf;
use Email::Sender::Simple qw( sendmail );
@@ -543,29 +543,13 @@ sub send_prepared {
# through Email::Address to make sure
my @env_to = map { $_->address } Email::Address->parse($cust_msg->env_to);
- my $transport = email_sender_transport_or_error($domain);
+ my $message = join("\n", $cust_msg->header, $cust_msg->body);
- my $error = '';
- if ( ref($transport) ) {
-
- warn "$me sending message\n" if $DEBUG;
- my $message = join("\n", $cust_msg->header, $cust_msg->body);
-
- local $SIG{__DIE__}; # don't want Mason __DIE__ handler active
- local $@;
- eval { sendmail( $message, { transport => $transport,
- from => $cust_msg->env_from,
- to => \@env_to })
- };
- if (ref($@) and $@->isa('Email::Sender::Failure')) {
- $error = $@->code.' ' if $@->code;
- $error .= $@->message;
- } else {
- $error = $@;
- }
- } else {
- $error = $transport;
- }
+ my $error = _sendmail( $message, { 'from' => $cust_msg->env_from,
+ 'to' => \@env_to,
+ 'domain' => $domain,
+ }
+ );
$cust_msg->set('error', $error);
$cust_msg->set('status', $error ? 'failed' : 'sent');
-----------------------------------------------------------------------
Summary of changes:
FS/FS/Misc.pm | 51 ++++++++++++++++++++++-----------------------
FS/FS/msg_template/email.pm | 30 +++++++-------------------
2 files changed, 32 insertions(+), 49 deletions(-)
More information about the freeside-commits
mailing list