use MIME::Entity;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP;
-use Email::Sender::Transport::SMTP::TLS;
+use Email::Sender::Transport::SMTP::TLS 0.11;
use FS::UID;
FS::UID->install_callback( sub {
}
+ 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'}.
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 = '';
}
# Logging
- if ( $conf->exists('log_sent_mail') and $options{'custnum'} ) {
+ if ( $conf->exists('log_sent_mail') ) {
my $cust_msg = FS::cust_msg->new({
'env_from' => $options{'from'},
'env_to' => join(', ', @to),
'custnum' => $options{'custnum'},
'msgnum' => $options{'msgnum'},
'status' => ($error ? 'failed' : 'sent'),
+ 'msgtype' => $options{'msgtype'},
});
$cust_msg->insert; # ignore errors
}
my $me = '[FS::Misc::generate_email]';
- my @fields = qw(from to bcc subject custnum msgnum);
+ my @fields = qw(from to bcc subject custnum msgnum msgtype);
my %return;
@return{@fields} = @args{@fields};
'';
}
+=item process_send_generated_email OPTION => VALUE ...
+
+Takes arguments as per send_email() and sends the message. This
+will die on any error and can be used in the job queue.
+
+=cut
+
+sub process_send_generated_email {
+ my %args = @_;
+ my $error = send_email(%args);
+ die "$error\n" if $error;
+ '';
+}
+
=item send_fax OPTION => VALUE ...
Options: