MailTransport refactoring

This commit is contained in:
Rainer Gümpelein 2022-01-12 20:09:55 +01:00
parent 7a54a35b00
commit 9082b161de
5 changed files with 44 additions and 239 deletions

View file

@ -1,133 +0,0 @@
#!/usr/bin/perl -w
#2021-03-17
#redisgn because of BEGIN, use Net::SMTP; and executed in src/scripts
#
#sudo su www-data -c "./src/scripts/newsletter_post.pl 'shareedms-primary' 'send_cardexpire'"
#
#TODO, migrate it all to MailTransport.pm
#
#
use vars qw($syshost);
BEGIN {
$syshost = $ARGV[0] || exit 1;
}
use lib "/var/www/copri-bike/$syshost/src";
use strict;
use warnings;
use utf8;
use Encode;
use CGI ':standard';
use DBI;
use POSIX;
use Email::MIME;
use IO::All;
use Email::MIME::CreateHTML;
use Email::Sender::Simple qw(sendmail);
use Net::SMTP;
use Try::Tiny;
use URI::Encode;
my $uri_encode = URI::Encode->new( { encode_reserved => 1 } );
use Data::Dumper;
use Sys::Hostname;
my $hostname = hostname;
use Lib::Config;
my $q = new CGI;
my $cf = new Config;
my %varenv = $cf->envonline("","$syshost");
my $today = strftime("%d.%m.%Y %H:%M:%S",localtime(time));
my $todo = $ARGV[1];
open(EMA, ">> $varenv{logdir}/newsletter_post.log");
print EMA "\n$today, start mailing\n";
print EMA "'$todo\n";
my $smtp_return = "";
if($todo eq "send_cardexpire"){
my ($mail_to,$subject,$body,$signature) = send_cardexpire(\%varenv);
$smtp_return = transport(\%varenv,$mail_to,$subject,$body,$signature);
}
#----------------------------------------------------
sub send_cardexpire {
my $varenv = shift;
my $mail_to = "ragu\@gnu-systems.de";
my $name = "test";
my $subject = "Fahrradmietsystem Konstanz";
my $body = <<EOF
Guten Tag $name,
wir mussten Ihren Fahrradmietsystem Account sperren weil der letzte Mietbetrag nicht eingezogen werden konnte.
Sie können Ihren Account selbst wieder freischalten, indem Sie die Zahlungsdaten erneuern. Dies kann aus Sicherheitsgründen von Seiten Ihrer Bank nötig sein oder es gab einen Fehler in Ihren Eingaben.
Nach der Anmeldung im Fahrradmietsystem Konstanz ( <a href='https://www.stadtwerke-konstanz.de/mobilitaet/rad-mietsystem?konrad_goto=Anmelden'>https://www.stadtwerke-konstanz.de/mobilitaet/rad-mietsystem</a> ) haben Sie die Möglichkeit Ihre Daten zu überprüfen und ggf. zu erneuern.
Kontaktieren Sie uns bitte falls Ihr Account für den Verleih nicht automatisch freigeschaltet wurde.
Für weitere Fragen wenden Sie sich bitte an unsere Buchhaltung unter: buchhaltung\@fahrradspezialitaeten.com oder telefonisch 0761/5158912 (Mo, Mi, Fr 9-12 Uhr)
EOF
;
$body =~ s/\n/\<br \/>/g;
my $signature = "";
return ($mail_to,$subject,$body,$signature);
}
#---------------------------------------------------
#
sub transport {
my $varenv = shift;
my $mail_to = shift;
my $subject = shift;
my $body = shift;
my $signature = shift;
my $html = "<html><head><title>$subject</title></head><body style='text-align:left;border:0px solid silver;padding:15px;margin:2%;width:90%;'>\n";
$html .= "<div>$body</div>\n";
$html .= "<div>$signature</div>\n";
$html .= "</body></html>";
my $smtp = Net::SMTP->new($varenv->{mail_gateway},
Port => 465,
Hello => 'TeilRad',
Timeout => 30,
Debug => 0,
SSL => 1,
);
$smtp->auth($varenv->{sasl_username},$varenv->{sasl_password});
$smtp->mail($varenv->{mail_from});
if($hostname ne "ginger"){
$mail_to = $varenv->{mail_testto};
$subject .= "* offline Test *";
}
if ($smtp->to($mail_to)) {
$smtp->data();
$smtp->datasend("To: $mail_to\n");
$smtp->datasend("Subject: $subject\nMIME-Version: 1.0\nContent-Type: text/html; charset=UTF-8 \n\n");
$smtp->datasend($html);
$smtp->dataend();
print EMA "$?\n";
} else {
print EMA $smtp->message();
}
sleep 1;
return $?;
}
#----------------------------------------------------
print EMA "done mailing: $?\n";
print EMA "\n\n";
close EMA;
1;